27 марта 2009

Несколько JavaScript GUI Frameworks

Вчера копался в форуме eyeOS и прочел, что их JavaScript-фреймворк работает, но он очень простой и происходит это по той причине, что в команде нет ни одного фаната JavaScript и написано все очень примитивно. Там же они сообщили, что присматриваются к AJAX-фреймворку Qooxdoo, чтобы построить на нем свой eyeOS tooklit2. Именно так я узнал о Qooxdoo. Приятное открытие.

qooxdoo is a comprehensive and innovative Ajax application framework. Leveraging object-oriented JavaScript allows developers to build impressive cross-browser applications. No HTML, CSS nor DOM knowledge is needed.

It includes a platform-independent development tool chain, a state-of-the-art GUI toolkit and an advanced client-server communication layer. It is open source under an LGPL/EPL dual license.
Qooxdoo оказался действительно тем, что я давно искал и я потратил всю ночь, чтобы поиграться с ним. На официальном сайте есть исчерпывающая документация по всему фреймворку. Демонстрационное приложение создано очень удобно и вместе с результатом показывает и исходный код демки.

Но почему же мне все так понравилось?

Несмотря на то, что Qooxdoo относится к "тяжеловесным" фреймворкам, грузится он очень даже быстро, а в работе не пожирает ресурсы процессора в отличие от некоторых его конкурентов.

Упс... Заикнулся про конкурентов. Надо бы и про них немного рассказать, итак:
  • TIBCO General Interface - сейчас наверное самый нашумевший из "тяжеловесов". Довольно много с ним работал, месяца 3. Вообще понравился, но очень уж "тяжелый" и многие его возможности мне просто не нужны.
  • Bindows - взглянул, с первого раза впечатления как от Tibco. Красиво, тяжело, запутанно.
  • Dojo - о нем знают все. Но это скорее AJAX-фремворк для использования в структуре обычного сайта. Где-то прилепил эффект, где-то окно, где-то получил данные из базы. Это нельзя назвать GUI-фреймворком как остыльных в этом списке, однако и лишить Dojo упоминания тоже как-то нельзя. Имеено по причине его "не совсем GUI-фреймворк" я искал что-то другое.
  • Jx - люблю! =) молодой фреймворк построенный на базе Mootools. Легковесный, как и все, что связано с Mootools. Хороший конструктор для хороших мозгов. Еще очень молодой, но очень приятный и быстрый. Рекомендую всем.
  • Backbase AJAX Framework - достойный конкурент Qooxdoo. Мне понравился. Идея описывать весь GUI и events в XML очень хорошая. Однозначно! Для ознакомления - всем.
  • JackBe Presto Framework - что-то ооооочень тяжелое, но выглядит красиво. Заморачиваться не стал, так как при виде демо сразу испугался =).
Работать с Qooxdoo одно удовольствие. Все понятно и очень удобно в отличие от того же TIBCO General Interface. Форматом обмена данными в Qooxdoo является JSON, что не может не радовать, так как работать с XML не очень удобно, если проект у тебя довольно небольшой.

Вот пример создания обычной кнопки с изображением рядом с текстом:


// Создаем кнопку
var button1 = new qx.ui.form.Button("Моя кнопка", "images/myicon.png");

// Создаем контейнер в котором будет находиться кнопка, в данном случае само тело страницы (объект document)
var doc = this.getRoot();

// Помещаем кнопку в контейнер с фиксированными координатами
doc.add(button1, {
left : 100,
top : 50
});

// Добавим обработчик события
button1.addListener("execute", function(e) {
alert("Привет!");
});





Все элементарно и очень удобно.


А вот пример как сделать RPC (Remote Procedure Call):



var rpc = new qx.io.remote.Rpc(
"http://localhost:8080/qooxdoo/.qxrpc",
"qooxdoo.test"
);

// синхронный вызов
try {
var result = rpc.callSync("echo", "Test");
alert("Результат вызова: " + result);
} catch (exc) {
alert("Исключение во время вызова: " + exc);
}

// ассинхронный вызов
var handler = function(result, exc) {
if (exc == null) {
alert("Результат вызова: " + result);
} else {
alert("Исключение во время вызова: " + exc);
}
};
rpc.callAsync(handler, "echo", "Test");




Ну на этом закончу. Цели рассказать подробно я не ставил, хотел лишь сказать, что мне очень понравился Qooxdoo и порекомендовать всем если не использовать, то хотябы ознакомиться с этим творением.

Опять же не стоит забывать о том, что всему свое место и время. Использовать Qooxdoo для создания обычного сайта или для создания сайта с элементами AJAX глупо. Qooxdoo предназначен для создания именно веб-приложений и если вам требуется просто делать XMLHttpRequest или добавить эффекты и анимацию на сайт, то рекомендую использовать компиляцию Mootools с набором необходимых классов, а не таскать за страницами "тяжеловесный" фреймворк типа Qooxdoo или TIBCO General Interface.

2 комментария:

  1. Благодарю, Сударь. Это не по мне. Удачных начинаний и продолжений. Я пас.

    ОтветитьУдалить
  2. Data Visualization Software
    SQIAR (http://www.sqiar.com/solutions/technology/tableau) is a leading Business intelligence Company.Using Tableau,SQIAR rapidly transform your sea of uncorrelated data into meaningful interactive and actionable visual insights.

    ОтветитьУдалить