Jump to content

Wt (веб-инструментарий)

вес
Оригинальный автор(ы) В сети
Первоначальный выпуск 1.0.0 / декабрь 2005 г .; 18 лет назад ( 2005-12 )
Стабильная версия
4.10.4 / 6 марта 2024 г .; 4 месяца назад ( 06.03.2024 ) [1]
Репозиторий Wt репозиторий
Написано в С++
Операционная система Кросс-платформенный
Тип Веб-фреймворк
Лицензия Двойная лицензия :
Веб-сайт www .webtoolkit .Евросоюз / вес

Wt (произносится как «остроумный» ) — это с открытым исходным кодом, виджеты, ориентированный на веб-фреймворк для C++ языка программирования . Он имеет API, напоминающий API- интерфейс Qt (хотя он был разработан с помощью Boost и несовместим при смешивании с Qt), также использует дерево виджетов и управляемую событиями систему сигналов/слотов . [2]

Целью разработки Wt является получение преимуществ от с отслеживанием состояния модели компонентов , используемой в API-интерфейсах настольных приложений, применяемых в веб-разработке , вместо традиционного шаблона проектирования MVC (модель-представление-контроллер). Таким образом, вместо использования MVC на уровне веб-страницы , он переносится на уровень отдельных компонентов. [3]

Хотя библиотека использует процесс разработки программного обеспечения для настольных компьютеров , она поддерживает некоторые веб -функции, в том числе:

Одной из уникальных особенностей Wt является уровень абстракции модели рендеринга браузера . Библиотека использует Ajax для связи с совместимыми с ней браузерами, одновременно используя в простой HTML - форме обратную передачу для других пользовательских агентов . Используя метод прогрессивной загрузки , пользовательский интерфейс сначала отображается как простой HTML- документ , затем, при условии его поддержки в браузере, он автоматически обновляется для использования Ajax для повышения интерактивности. Таким образом, Wt по определению:

Из-за популярности C /C++ во встроенных системных средах Wt часто используется в таких устройствах и (как следствие) хорошо оптимизирован по производительности .

Основные особенности

[ редактировать ]

Более подробный обзор смотрите в разделе «Функции» на официальном сайте.

Пример кода

[ редактировать ]

Программа «Привет, мир!» программа в Wt:

#include <Wt/WApplication.h>
#include <Wt/WBreak.h>
#include <Wt/WContainerWidget.h>
#include <Wt/WLineEdit.h>
#include <Wt/WPushButton.h>
#include <Wt/WText.h>

/*
 * A simple hello world application class which demonstrates how to react
 * to events, read input, and give feed-back.
 */
class HelloApplication : public Wt::WApplication
{
public:
  HelloApplication(const Wt::WEnvironment& env);

private:
  Wt::WLineEdit *nameEdit_;
  Wt::WText     *greeting_;

  void greet();
};

/*
 * The env argument contains information about the new session, and
 * the initial request. It must be passed to the WApplication
 * constructor so it is typically also an argument for your custom
 * application constructor.
*/
HelloApplication::HelloApplication(const Wt::WEnvironment& env)
  : WApplication(env)
{
  setTitle("Hello world");                            // application title

  root()->addNew<Wt::WText>("Your name, please ? ");  // show some text

  nameEdit_ = root()->addNew<Wt::WLineEdit>();        // allow text input
  nameEdit_->setFocus();                              // give focus

  auto button = root()->addNew<Wt::WPushButton>("Greet me."); // create a button
  button->setMargin(5, Wt::Side::Left);                       // add 5 pixels margin

  root()->addNew<Wt::WBreak>();            // insert a line break
  greeting_ = root()->addNew<Wt::WText>(); // empty text

  /*
   * Connect signals with slots
   *
   * - simple Wt-way: specify object and method
   */
  button->clicked().connect(this, &HelloApplication::greet);

  /*
   * - using an arbitrary function object, e.g. useful to bind
   *   values with std::bind() to the resulting method call
   */
  nameEdit_->enterPressed().connect(std::bind(&HelloApplication::greet, this));

  /*
   * - using a lambda:
   */
  button->clicked().connect([=]() { 
    std::cerr << "Hello there, " << nameEdit_->text() << "\n";
  });
}

void HelloApplication::greet()
{
  /*
   * Update the text, using text input into the nameEdit_ field.
   */
  greeting_->setText("Hello there, " + nameEdit_->text());
}

int main(int argc, char **argv)
{
  /*
   * Your main method may set up some shared resources, but should then
   * start the server application (FastCGI or httpd) that starts listening
   * for requests, and handles all of the application life cycles.
   *
   * The last argument to WRun specifies the function that will instantiate
   * new application objects. That function is executed when a new user surfs
   * to the Wt application, and after the library has negotiated browser
   * support. The function should return a newly instantiated application
   * object.
   */
  return Wt::WRun(argc, argv, [](const Wt::WEnvironment &env) {
    /*
     * You could read information from the environment to decide whether
     * the user has permission to start a new application
     */
    return std::make_unique<HelloApplication>(env);
  });
}

См. также

[ редактировать ]
  1. ^ «Wt: Примечания к выпуску» . www.webtoolkit.eu . Проверено 10 июля 2024 г.
  2. ^ Дюмон, Вим; Дефорш, Коэн (11 февраля 2008 г.). «Wt: Набор веб-инструментов» . Журнал доктора Добба . Проверено 24 января 2017 г.
  3. ^ Волкман, Виктор (6 июня 2008 г.). «Wt: Библиотека веб-инструментариев C++ позволяет создавать веб-приложения, независимые от сценариев» . Куинстрит . Проверено 24 января 2017 г.
[ редактировать ]

Официальный сайт Отредактируйте это в Викиданных

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: ee84a61c0b6257e267f75f249b5ce611__1720591680
URL1:https://arc.ask3.ru/arc/aa/ee/11/ee84a61c0b6257e267f75f249b5ce611.html
Заголовок, (Title) документа по адресу, URL1:
Wt (web toolkit) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)