Wt (веб-инструментарий) - Wt (web toolkit)
Оригинальный автор (ы) | Emweb |
---|---|
изначальный выпуск | 1.0.0 / декабрь 2005 г. |
Стабильный выпуск | 4.1.1 / 9 сентября 2019 г.[1] |
Репозиторий | Wt репозиторий |
Написано в | C ++ |
Операционная система | Кроссплатформенность |
Тип | Веб-фреймворк |
Лицензия | С двойной лицензией: |
Интернет сайт | www |
Вес (произносится "остроумный") является Открытый исходный код виджет -центрический веб-фреймворк для C ++ язык программирования. Он имеет API напоминая Qt framework (хотя он был разработан с помощью Boost и несовместим при смешивании с Qt), также с использованием дерева виджетов и событийный система сигналов / слотов.[2]
Цель конструкции Wt - извлечь выгоду из сохранный компонент модель, используемая в API настольных приложений, применяется к Веб-разработка —Вместо традиционных MVC (модель – представление – контроллер) шаблон проектирования. Поэтому вместо использования MVC на уровне страница в Интернете, он доведен до уровня отдельных компонентов.[3]
В то время как библиотека использует рабочий стол процесс разработки программного обеспечения, он поддерживает некоторые сеть -специфические особенности, в том числе:
- Семантические URL
- Навигация по истории браузера
Одна из уникальных особенностей Wt - это уровень абстракции браузера. рендеринг модель. Библиотека использует Аякс для связи с совместимыми с ним браузерами, используя простой HTML -форма обратные сообщения для других пользовательские агенты. Использование прогрессивного бутстрап -метод, пользовательский интерфейс отображается как простой HTML документ сначала, при условии поддержки в браузере, он автоматически обновляется для использования Аякс для повышения интерактивности. Таким образом, Wt по определению:
- Единственный сервер -сторона рамки реализация стратегии прогрессивное улучшение автоматически;
- Единственный фреймворк Ajax с поисковая оптимизация (SEO) качества.
Из-за популярности C / C ++ в Встроенная система среды, Wt часто используется в таких устройствах и (как следствие) был оптимизирован для спектакль.
Основные особенности
- Автоматический изящная деградация и прогрессивное улучшение
- Поддерживает инициируемые сервером события (Комета )
- Единый рендеринг API (SVG, HTML5 элемент холста, VML )
- Клиент - и сервер - сторонняя проверка
- Содержит различные безопасность особенности, которых следует избегать Межсайтовый скриптинг и Подделка межсайтовых запросов (CSRF) уязвимости
- Включает компактный C ++ ORM -layer ("Wt :: Dbo")
- Использует WebSocket сетевой протокол, если он доступен, для Клиент-серверная модель связи, с откатом на Ajax или простой страница в Интернете рендеринг
Более подробный обзор см. В разделе «Возможности» официального сайта.
Пример кода
В "Привет, мир!" программа в массе:
#включают <Wt/WApplication.h>#включают <Wt/WBreak.h>#включают <Wt/WContainerWidget.h>#включают <Wt/WLineEdit.h>#включают <Wt/WPushButton.h>#включают <Wt/WText.h>/* * Простой класс приложения hello world, демонстрирующий, как реагировать * к событиям, считывать ввод и давать обратную связь. */учебный класс HelloApplication : общественный Вес::WApplication{общественный: HelloApplication(const Вес::WE Окружающая среда& env);частный: Вес::WLineEdit *nameEdit_; Вес::WText *приветствие_; пустота приветствовать();};/* * Аргумент env содержит информацию о новом сеансе, и * первоначальный запрос. Его необходимо передать в WApplication * конструктор, поэтому он обычно также является аргументом для вашего пользовательского * конструктор приложения.*/HelloApplication::HelloApplication(const Вес::WE Окружающая среда& env) : WApplication(env){ setTitle("Привет, мир"); // заголовок приложения корень()->Добавить новое<Вес::WText>("Ваше имя, пожалуйста ? "); // показать текст nameEdit_ = корень()->Добавить новое<Вес::WLineEdit>(); // разрешить ввод текста nameEdit_->setFocus(); // фокус авто кнопка = корень()->Добавить новое<Вес::WPushButton>(«Приветствуй меня».); // создаем кнопку кнопка->setMargin(5, Вес::Сторона::Оставили); // добавляем отступ в 5 пикселей корень()->Добавить новое<Вес::WBreak>(); // вставляем разрыв строки приветствие_ = корень()->Добавить новое<Вес::WText>(); // пустой текст /* * Подключите сигналы со слотами * * - простой способ Wt: указать объект и метод */ кнопка->щелкнул().соединять(это, &HelloApplication::приветствовать); /* * - с использованием произвольного функционального объекта, например полезно связать * значения с std :: bind () для результирующего вызова метода */ nameEdit_->enterPressed().соединять(стандартное::связывать(&HelloApplication::приветствовать, это)); /* * - с использованием лямбды: */ кнопка->щелкнул().соединять([=]() { стандартное::Cerr << "Привет, " << nameEdit_->текст() << " п"; });}пустота HelloApplication::приветствовать(){ /* * Обновите текст, используя ввод текста в поле nameEdit_. */ приветствие_->setText("Привет, " + nameEdit_->текст());}int главный(int argc, char **argv){ /* * Ваш основной метод может настроить некоторые общие ресурсы, но затем * запустить серверное приложение (FastCGI или httpd), которое начинает прослушивание * для запросов и обрабатывает все жизненные циклы приложения. * * Последний аргумент WRun указывает функцию, которая будет создавать экземпляр * новые объекты приложения. Эта функция выполняется, когда новый пользователь просматривает страницы * в приложение Wt, и после того, как библиотека согласовала браузер * поддерживать. Функция должна возвращать только что созданное приложение. * объект. */ возвращаться Вес::WRun(argc, argv, [](const Вес::WE Окружающая среда &env) { /* * Вы можете прочитать информацию из окружающей среды, чтобы решить, * у пользователя есть разрешение на запуск нового приложения */ возвращаться стандартное::make_unique<HelloApplication>(env); });}
Смотрите также
- Сравнение веб-фреймворков
- JWt (веб-инструментарий Java), уроженец Ява версия Wt
- Tntnet
Рекомендации
- ^ "Wt: Выпуск v4.1.1". webtoolkit.eu. 9 сентября 2019 г.,. Получено 11 октября, 2019.
- ^ Думон, Вим; Дефорш, Коэн (11 февраля 2008 г.). "Wt: набор веб-инструментов". Журнал доктора Добба. Получено 24 января, 2017.
- ^ Фолькман, Виктор (6 июня 2008 г.). "Wt: Библиотека C ++ Web Toolkit позволяет писать веб-приложения, не зависящие от скриптов". QuinStreet. Получено 24 января, 2017.