Qooxdoo

qooxdoo — JavaScript-Фреймворк с открытым исходным кодом для разработки пользовательских интерфейсов. Служит фреймворком для одностраничных приложений.
Разработка веб-приложений возможна полностью на JavaScript без использования HTML и каскадных таблиц стилей (CSS).
По своему стилю и философии похож на библиотеки виджетов Qt и SWT, о чем заявляли сами разработчики qooxdoo.

Компоненты

Особенности 
 Ajax
 Кроссбраузерность
 Связывание данных, как одностороннее так и двух.
 Стилизация элементов графического интерфейса за счет графических тем
 ООП: включает свое специфичное определение классов, интерфейсов, смесей
 Встроенная подсистема модульных тестов
 Оконный интерфейс
 Расположение элементов интерфейса осуществляется через систему слоев (layouting)

Компилятор 
До версии 5.0 включительно использовался для создания конечного приложения, документации, запуска Unit-тестов набор скриптов написанных на языке python.
В версии 6.0 был разработан специальный компилятор qx написанный на языке JavaScript. Компилятор распространяется в виде NPM пакета и включает
следующие основные команды:

 qx compile - сборка qooxdoo проекта
 qx test - сборка и запуск модульных тестов
 qx package - менеджер пакетов qooxdoo
 qx serve - запуск встроенного веб-сервера для работы веб-приложения
 qx clean - очистить результаты сборки

Компилятор собирает приложения, написанные на стандарте ES6, благодаря чему возможен их запуск в браузере.

Пример использования 
Ниже приведен пример использования qooxdoo.

qx.Class.define("custom.Application",
{
  extend : qx.application.Standalone,

  members :
  {
    main : function()
    {
      this.base(arguments);

      // Создать кнопку
      var button1 = new qx.ui.form.Button("First Button", 
                                          "icon/22/apps/internet-web-browser.png");

      // документ является корнем приложения
      var doc = this.getRoot();

      // Добавить кнопку к документу с заданными координатами
      doc.add(button1, {left: 100, top: 50});

      // Добавить подсказку
      button1.setToolTip(new qx.ui.tooltip.ToolTip("A nice tooltip",
                                                   "icon/32/status/dialog-information.png"));

      // Добавить обработчик к кнопке
      button1.addListener("execute", function(e) {
        alert("Hello World!");
      });
    }
  }
});

Система пакетов 
Фреймворк позволяет разделить исходный код приложения по модулям или библиотекам и описать зависимости между ними через конфигурационные файлы.
Библиотеки можно преобразовать в пакеты (плагины) и опубликовать их в общедоступный qooxdoo репозиторий, который базируется на GitHub.
Данная особенность позволяет создавать и совместно использовать эти пакеты.

Дополнительный инструментарий 

Для удобства разработки фреймворк включает следующие инструменты:

 Playground — среда для написания исходного кода qooxdoo и его запуска
 API Viewer — API справочник по классам, который может быть создан по Javadoc-подобным комментариям
 Package Browser — обозреватель репозитория qooxdoo пакетов
 Demo Browser — обозреватель коллекции демонстрационных примеров с приложенным JavaScript кодом

Данные инструменты являются базовыми и распространяются в виде пакетов.

Примечания

Литература

Ссылки 
 
 Страница проекта на Sourceforge
 Взгляд разработчика на JavaScript фреймворк qooxdoo 1.4
 qooxdoo 6.0 представляет новый компилятор

Веб-фреймворки на JavaScript
Фреймворки
AJAX
Программное обеспечение с лицензией MIT
Свободное кроссплатформенное программное обеспечение