Wt Framework é uma biblioteca toolkit desenvolvida com C++ Moderno que substitui o uso de JavaScript na Web.
Possui segurança nativa contra ataques SQL Injection, XSS e CSRF. Está disponível para diversas plataformas e sistemas operacionais, tais como: Windows, macOS, GNU/Linux, Android, RaspberyPI, FreeBSD e OpenSolaris.
Você pode instalar o Wt Framework de diversas formas, usando binários pré-compilados ou compilando o código fonte.
Veja aqui o procedimento para todos os sistemas operacionais e plataformas suportadas.
Exemplo para Ubuntu
sudo apt install gcc g++ libboost-all-dev cmake
Você ainda pode complementar instalando também as dependências opcionais:
sudo apt install doxygen libgraphicsmagick3 libssl-dev libpq-dev libssl-dev libfcgi-dev
No mesmo link citado acima existe o procedimento para outras distros.
Agora é só fazer o download do pacote, compilar e instalar. Até a data de publicação desse artigo a versão mais recente é a: 4.9.1, mas consulte o endereço aqui na web para mais informações.
wget -c https://github.com/emweb/wt/archive/4.9.1.tar.gz
tar zxvf wt-4.9.1.tar.gz
cd wt-4.9.1/
cmake -B build .
cd build && make
sudo make install
sudo ldconfig
Nesse exemplo é possível obter um tipo de “Hello, World!” para ter noção de como o framework funciona.
Crie um arquivo main.cpp
e cole o código abaixo:
#include <Wt/WApplication.h>
#include <Wt/WBreak.h>
#include <Wt/WContainerWidget.h>
#include <Wt/WLineEdit.h>
#include <Wt/WPushButton.h>
#include <Wt/WText.h>
class HelloApplication : public Wt::WApplication {
public:
HelloApplication(const Wt::WEnvironment& env);
private:
Wt::WLineEdit *nameEdit_;
Wt::WText *greeting_;
};
HelloApplication::HelloApplication(const Wt::WEnvironment& env)
: Wt::WApplication(env){
setTitle("Hello world");
root()->addWidget(std::make_unique<Wt::WText>("Your name, please? "));
nameEdit_ = root()->addWidget(std::make_unique<Wt::WLineEdit>());
Wt::WPushButton *button = root()->addWidget(std::make_unique<Wt::WPushButton>("Greet me."));
root()->addWidget(std::make_unique<Wt::WBreak>());
greeting_ = root()->addWidget(std::make_unique<Wt::WText>());
auto greet = [this]{
greeting_->setText("Hello there, " + nameEdit_->text());
};
button->clicked().connect(greet);
}
int main(int argc, char **argv){
return Wt::WRun(argc, argv, [](const Wt::WEnvironment& env) {
return std::make_unique<HelloApplication>(env);
});
}
Para compilar rode o seguinte comando:
g++ main.cpp -lwthttp -lwt
E para rodar, rode:
./a.out --docroot . --http-address 0.0.0.0 --http-port 9090
A aplicação estará disponível no endereço e porta: http://0.0.0.0:9090, abra essa url no seu navegador.