Di Sole

RIA приложения, сравнение javascript фреймворков

Posted in Dojo Toolkit, О работе, ExtJS, JavaScript, JQuery, YAHOO! yui by ignar on 22.09.2009

С развитием интернет технологий сложность фреймворков возрастает и компании ищут, не просто программиста, а специалиста узкого профиля владеющего инструментом разработки, а не низкоуровневыми функциями языка. Для хорошего специалиста уже не достаточно знать язык, он должны владеть инструментом.


Спешу сообщить, что мой адрес поменялся.
Если эта статья Вам интересна — тут она обновлена.

Живой блог лучше чем мертвый.

Новая rss волна — ignar’s log

Мой твиттер остался неизменным — ignart

Мои контакты


Давайте сделаем небольшой обзор JavaScript фреймворков для создания RIA приложений.

Не будем затрагивать Flash, Flex, Silverlight и GWT, только фреймвоки на чистом JavaScript.

Статьи про JavaScript на DaddyFeed.com

Flash, Flex, Silverlight — хороши, но имеют ряд ограничений, которые порождают риски их использования:

  • Приложения весят больше чем на JavaScript
  • Они накладывают первоначальные ограничения запуска (должен быть установлен Adobe Flash Player или Microsoft Silverlight)
  • Silverlight еще менее универсален, он не работает на Linux

Я не утверждаю, что они плохие, наоборот, разрабатывать на них легко, и если они запускаются, то работают в любом браузере одинаково. Это очень большое преимущество.

Мне импонирует .NET платформа, она дает наибольшую универсальность разработчику.


JavaScript

Не универсален, работает по-разному, сильно зависит от браузера, сам язык накладывает большие ограничения, но все, же хорош. Почему?

Давайте разбираться.

— Почему приложения на JS могут не работать?
— Если выключен js в браузере.

— Насколько часто можно столкнуться с выключенным js?
— Думаю, гораздо чаще может возникнуть ситуация с не установленным Silverlight или Adobe Player

— Не секрет, что каждый браузер считает своим долгом интерпретировать код по своему (особенно IE<7 версии)
— Я вижу только один выход — использовать фреймворки, которые дают необходимую универсальность и стабильность разработки


JavaScript Frameworks

Сейчас писать на чистом js будет только начинающий программист, которому надо разобраться. Маньяк, у которого фикс-идея или гений который, поработав с чужим, сделает свое.

На мой взгляд, наиболее удачным выбором готовых решений будут:

  • jQuery
  • Dojo Toolkit
  • ExtJS

Я их привел в порядке увеличения возможностей.

Какие достойные фреймвоки я упустил?

  • YUI — в чем то хорош, но не настолько гибок, что б составить конкуренцию Dojo. Компания Yahoo! однозначно привнесла большой вклад в развитие интернета, но это не самое лучшее, что они сделали.
  • MooTools — на мой взгляд, единственное, что в нем хорошего это поддержка ООП, но ведь без этого можно и обойтись?
  • Prototype — думаю, он умер, и о нем помнят только те, кто поддерживает на нем проект.
  • qooxdoo — экзотичная штучка, последняя версия 0.8.3 на данный момент. Тут, наверно, лучше самому все увидеть
  • Cappuccino Web Framework — очень редкий, но несомненно стоющий внимания. Фреймворк написан на новом языке Objective-J, по подобию Objective-C, на JavaScript. Направлен только на web приложения, в роли плюшки к сайту он не пойдет. Поддерживает все современные браузеры.

Вы не знаете с чего начать и шерстите форумы в поисках совета?

Вам нужен jQuery. Это достойная замена чистому js. С ним Вы получите результат с минимальными телодвижениями.

В подарок Вам будет большое комъюнити и гарантия в виде немереного количества плагинов.

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

Стоит также упомянуть, что у разработчиков jQuery существуют договоренности с Microsoft.


jQuery для Вас не новость, но хочется больше?

Следующим шагом на пути к идеалу я вижу Dojo Toolkit.

API Dojo Toolkit можно поделить на три отдельных библиотеки это базовые скрипты (Dojo Base, Dojo Core), Dijit — UI состовляющяя фреймворка, Dojox — библиотека расширений, плагины, которые работают, но не внесены в Core и Dijit.

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

  • Dojo events, гибка и удобная система событий
  • Dojo IO, xhr (ajax) запросы, с поддержкой REST технологии
  • Dojo Package System — удобнейшая система модулей и их загрузки, что уменьшает время загрузки страницы и время готовности приложения.
  • Dojo OO Tools — объектно-ориентированные возможности фреймворка

В Dojo Core, так же входит в стандартный набор, но требует дозагрузки:

  • хистори, куки, Drag-n-Drop, colors, Google Gears, локализация (l10n), интернационализация (i18n) и расширенные возможности манипуляции html нодами
  • Отдельно стоит вынести систему виджетов и их парсинга — dojo.parser, про виджеты будет сказано ниже
  • dojo.data — api для получения данных с сервера, хранения и доступа и манипуляции в локальных, клиентских базах данных

Dijit — юзер интерфес богаче, чем в jQuery, но не без минусов, разработчики гарантируют их 100% работу в современных браузерах, Opera по их мнению в список таковых не входит.

На своем опыте, с проблемой в Opera столкнулся только один раз — это было не правильное позиционирование dijit.Dialog, что можно было исправить, немного почитав документацию.

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

Вся система виджетов базируется на двух классах dijit._Widget и dijit._Temlated

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

Для dijit есть три качественных набора css темплейтов.

В Dojox содержаться расширения к dojo core и dijit.

С своей стороны хотел бы выделить такие расширения как:

  • dojox.dtl — шаблонизатор на основе Django Template Language, с идентичным ему синтаксисом и классом dojox.dtl._Templated, расширяя который можно создавать шаблонизируемые виджеты с большими возможностями, чем c dijit._Temlated
  • dojox.collections — класс являющийся аналогом Java Collections фреймворка, конечно не с таким мощным функционалом
  • dojox.grid — то, чего так не хватает jQuery — стандартного града. Этот виджет хорошо расширяем и достаточно функционален, что бы удовлетворить Ваши требования

Dojo Toolkit используется, как в продуктах IBM так и посторонних приложениях (список).

Качественная интеграция Dojo Toolkit реализована в Zend Framework.

От себя добавлю, dojo отличный фреймворк, не смотря на проблемы с документацией.


ExtJS — полноправно обладает титулом самого страшного монстра среди JavaScript фреймворков.

В начале своего развития писался на Yahoo UI. Сейчас может работать на трех адаптерах jQuery, YUI или на своем родном на Ваш выбор.

Идеально подходит для мощной админчасти или web приложения приближенного интерфейсом к полноценной программе.

Штука не из легких по осваиванию и весу. На форуме официального сайта можно найти ответы на все Ваши вопросы.

Основу ивентов составляет Observer класс, который наследуется Component классом, который в свою очередь составляет основу всех UI элементов фреймворка.

Ext.grid — мощнейший инструмент отображения информации.

Можно долго описывать все возможности, но лучше это все увидеть на странице примеров.

ExtJS распространяется под двойной лицензией: коммерчиской и opensource. Купить лицензию Вы можете за 329$

В свое время, изменение лицензии фреймворка наделал много шума, много компаний отказалось от его использования, и переписывали свои продукты и еще некоторое время опасаясь очередного изменения лицензии.

Сами владельцы ExtJS мотивируют это тем, что настал период когда, фреймворк достиг стабильности и далее не мог так же прогрессивно развиваться как opensource.



Внешние ресурсы:

Подробней про Dojo Toolkit

Про ExtJS

комментариев 7

Subscribe to comments with RSS.

  1. Atrax said, on 23.09.2009 at 15:53

    Офф-тор.
    Дизайн неудачный — все приходится читать из «обозревателя блогов».

    По теме.
    Философский вопрос — а надо ли выходить на «уровень выше», чем просто единый код для многих браузеров, который дает jQuery?

    • ignar said, on 23.09.2009 at 18:39

      Вопрос, совсем не философский. Это как на охоте, Вы не пойдете за зайца с бронебойными пулями и на носорога с дробовиком.
      Если хватает jQuery, другие фреймворки не нужны, а когда Вам его уже не хватает, стоит глянуть на что-то более серьезное.

  2. […] RIA приложения, сравнение javascript фреймворков « Di Sole disole.wordpress.com/2009/09/22/ria-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-%D1%81%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-javascript-%D1%84%D1%80%D0%B5%D0%B9%D0%BC%D0%B2%D0%BE%D1%80%D0%BA%D0%BE%D0%B2 – view page – cached In Dojo Toolkit, ExtJS, JQuery, JavaScript, YAHOO! yui, О работе on 22.09.2009 at 20:41 — From the page […]

  3. Anton said, on 23.09.2009 at 20:12

    Хороший обзор, но можно еще подробнее про YUI, по-моему его как-то обходят стороной у нас, хотя зря…

    • ignar said, on 24.09.2009 at 10:52

      @Anton — я почти сутки думал, что Вам ответить, но, честно говоря, не нашелся.
      Точнее не нашел, что ответить. Не вижу его преимуществ перед тем же Dojo.

      Можете ли Вы мне в этом помочь?

  4. Anton said, on 24.09.2009 at 20:37

    Ну вот насчет dojo, наверно, вы правы, больших преимуществ я тоже не найду, просто про YUI я узнал раньше =)

  5. Snowcore said, on 16.10.2009 at 14:14

    Без сомнений, ExtJS — самый навороченный.
    Чаще приходится пользоваться jQuery.


Оставьте комментарий