Wt (произносится как «витти» ) - это веб-фреймворк с открытым исходным кодом, ориентированный на виджеты, для языка программирования C ++ . Он имеет API, похожий на API фреймворка Qt (хотя он был разработан с Boost и несовместим при смешивании с Qt), также использует дерево виджетов и систему сигналов / слотов, управляемую событиями . [2]
Автор (ы) оригинала | Emweb |
---|---|
Первый выпуск | 1.0.0 / декабрь 2005 г . |
Стабильный выпуск | 4.5.0 / 15 декабря 2020 г . [1] |
Репозиторий | Wt репозиторий |
Написано в | C ++ |
Операционная система | Кроссплатформенность |
Тип | Веб-фреймворк |
Лицензия | Двойная лицензия : |
Веб-сайт | www |
Цель разработки Wt - извлечь выгоду из модели компонентов с отслеживанием состояния, используемой в API настольных приложений, применяемой к веб-разработке, вместо традиционного шаблона проектирования MVC (модель – представление – контроллер). Таким образом, вместо того, чтобы использовать MVC на уровне веб-страницы , он переносится на уровень отдельных компонентов. [3]
Хотя в библиотеке используется процесс разработки программного обеспечения для настольных компьютеров , она поддерживает некоторые специфические для Интернета функции, в том числе:
- Семантические URL
- Навигация по истории браузера
Одна из уникальных особенностей Wt - это уровень абстракции модели рендеринга браузера . Библиотека использует Ajax для связи с совместимыми с ней браузерами, а также использует простой HTML - формы обратной связи для других пользовательских агентов . Используя прогрессивный метод начальной загрузки , пользовательский интерфейс сначала отображается как простой HTML- документ , а затем, при условии его поддержки в браузере, он автоматически обновляется для использования Ajax для повышения интерактивности. Таким образом, Wt по определению:
- Единственный серверный фреймворк, автоматически реализующий стратегию прогрессивного улучшения ;
- Единственный фреймворк Ajax с характеристиками поисковой оптимизации (SEO).
Из-за популярности C / C ++ во встроенных системных средах, Wt часто используется в таких устройствах и (как следствие) был сильно оптимизирован для производительности .
Основные особенности
- Автоматическая постепенная деградация и прогрессивное улучшение
- Поддерживает инициируемые сервером события ( Comet )
- Унифицированный API отрисовки ( SVG , элемент холста HTML5 , VML )
- Проверка на стороне клиента и на стороне сервера
- Содержит различные функции безопасности, позволяющие избежать уязвимостей межсайтового скриптинга и межсайтовой подделки запросов (CSRF).
- Включает компактный ORM- слой C ++ ("Wt :: Dbo")
- Использует сетевой протокол WebSocket , если он доступен, для модели взаимодействия клиент-сервер с откатом к Ajax или отрисовке простой веб-страницы.
Более подробный обзор см. В разделе «Возможности» официального сайта.
Пример кода
"Hello, World!" программа в Wt:
#include #include #include #include #include #include / * * Простой класс приложения hello world, который демонстрирует, как * реагировать на события, читать ввод и давать обратную связь. * / Класс HelloApplication : общественный Wt :: WApplication { общественности : HelloApplication ( Const Wt :: WEnvironment и окр );частное : Wt :: WLineEdit * nameEdit_ ; Wt :: WText * greeting_ ; void greet (); };/ * * Аргумент env содержит информацию о новом сеансе и * первоначальном запросе. Он должен быть передан конструктору WApplication *, поэтому обычно он также является аргументом для вашего настраиваемого * конструктора приложения. * / HelloApplication :: HelloApplication ( Const Wt :: WEnvironment и окр ) : WApplication ( окр ) { SETTITLE ( "Привет мир" ); // заголовок приложения корень () -> Addnew < Wt :: WText > ( "Ваше имя, пожалуйста?" ); // показать текст nameEdit_ = корень () -> AddNew < Wt :: WLineEdit > (); // разрешить ввод текста nameEdit_ -> setFocus (); // фокусируем автоматическая кнопка = корень () -> Addnew < Wt :: WPushButton > ( "Приветствуйте меня." ); // создаем кнопку- кнопку -> setMargin ( 5 , Wt :: Side :: Left ); // добавляем отступ в 5 пикселей корень () -> Addnew < Wt :: WBreak > (); // вставить разрыв строки greeting_ = корень () -> Addnew < Wt :: WText > (); // пустой текст / * * Соединить сигналы со слотами * * - простой способ Wt: указать объект и метод * / button -> clicked (). подключить ( это , & HelloApplication :: greet ); / * * - использование произвольного объекта функции, например, полезно для привязки * значений с помощью std :: bind () к результирующему вызову метода * / nameEdit_ -> enterPressed (). connect ( std :: bind ( & HelloApplication :: greet , this )); / * * - с использованием лямбда: * / button -> clicked (). connect ([ = ] () { std :: cerr << "Привет," << nameEdit_ -> text () << " \ n " ; }); }void HelloApplication :: greet () { / * * Обновите текст, используя ввод текста в поле nameEdit_. * / приветствие_ -> setText ( "Привет!" + nameEdit_ -> text ()); }int main ( int argc , char ** argv ) { / * * Ваш основной метод может настроить некоторые общие ресурсы, но затем он должен * запустить серверное приложение (FastCGI или httpd), которое начинает * прослушивание запросов и обрабатывает все жизненные циклы приложений. * * Последний аргумент WRun указывает функцию, которая будет создавать экземпляры новых объектов приложения. Эта функция выполняется, когда новый пользователь переходит * в приложение Wt и после того, как библиотека согласовала поддержку браузера *. Функция должна возвращать только что созданный объект application *. * / Возврат Wt :: WRun ( ARGC , ARGV , [] ( Уста Wt :: WEnvironment и окр ) { / * * Вы можете прочитать информацию из окружающей среды , чтобы решить , будет ли * пользователь имеет разрешения на запуск нового приложения * / возврат std :: make_unique < HelloApplication > ( env ); }); }
Смотрите также
- Сравнение веб-фреймворков
- JWT (Java Web Toolkit) , родной Java версия Wt
- Tntnet
Рекомендации
- ^ "Wt: Выпуск v4.5.0" . webtoolkit.eu . 15 декабря 2020 . Проверено 15 декабря 2020 года .
- ^ Думон, Вим; Дефорш, Коэн (11 февраля 2008 г.). «Wt: набор веб-инструментов» . Журнал доктора Добба . Проверено 24 января 2017 года .
- ^ Фолькман, Виктор (6 июня 2008 г.). «Wt: C ++ Web Toolkit Library позволяет писать веб-приложения, не зависящие от скриптов» . QuinStreet . Проверено 24 января 2017 года .
Внешние ссылки
Официальный веб-сайт