В моем твиттере прошла ссылка на десять JS-фреймворков, которые интересны в плане изучения и расширения возможностей, для того, чтобы разработчики не ограничивались только верхушкой мейнстрима (имеется ввиду jQuery/Prototype/Mootools/YUI). Вполне вероятно, что что-то из этого списка завтра будет не менее популярно, да и просто для повышения своей квалификации или подсматривания интересных решений. Оригинал на английском языке здесь, а я попробую рассмотреть самое интересное со своей колокольни.
SproutCore — интересный фреймворк, ориентированный на создание интерфейсных решений в вебе, приближенных к десктопным, в данном случае — к внешнему виду MacOS, так как SproutCore считается, по многим публикациям, как веб-продолжение десктопного фреймворка Сocoa, который используется в MacOS. Сама Apple использует этот фреймворк для реализации своих веб-приложений, в частности, именно потому, что они выглядят максимально похоже на родные приложения, стирая грань между вебом и десктопом. В плане виджетов SproutCore выглядит, если честно, очень и очень бледно, судя по примерам на сайте, хотя и работает быстро. До красивостей ExtJS ему еще очень далеко, однако это и не ставилось за цель — если считать, что целью было имитировать в вебе интерфейс Cocoa-программ, то библиотека с этим справляется отлично.
![sprout_widgets](http://abrdev.com/wp-content/uploads/2008/12/sprout_widgets.png)
В принципе, для разработки несложных веб-приложений, особенно на Mac-платформу (хотя ограничение на платформу в веб-среде это странновато), фреймворк отлично подойдет. А еще если мы подумаем, что на iPhone также стоит MacOS, и веб-приложения там самые родные, а с главным конкурентом JavaScript, Adobe Flash платформа Apple/iPhone испытывает сложности, в основном, теоретически/концептуального характера, то ориентация на веб выглядит уже более правильной. Ну что же, посмотрим.
Adobe Spry — фреймворк от Adobe, который призван упростить работу дизайнерам и разработчикам по созданию AJAX приложений. Если учесть, что в руках Adobe сосредоточено много ключевых для этого рынка технологий, в том числе Flash и AIR, то напрашивается и рынок для фреймворка — создание приложений для AIR-а. Сильной стороной проекта является интеграция со средами разработки, в частности, с Dreamwever-ом, а сама библиотека основана на декларативной модели описания виджетов. Функциональность Spry достаточна для большинства проектов, и содержит как виджеты, так и эффекты, модули для обработки данных (HTML, XML, JSON). Примеры выглядят неплохо, в плане быстродействия также все хорошо, так что при создании приложений на инфраструктуре Adobe можно серьезно рассматривать Spry как основной фреймворк. Однако как то я не заметил серьезных нововведений или уникальных сторон, так что пока козыри проекта — это только интеграция с средствами разработки и платформами Adobe.
![spry_rssreader](http://abrdev.com/wp-content/uploads/2008/12/spry_rssreader-300x193.png)
JavaScriptMVC — интересен с концептуальной стороны как пример переноса популярного паттерна проектирования (или архитектуры) на сторону клиента. Сам фреймворк состоит из достаточно большого количества классов, в частности, расширения стандартных объектов для абстракции от браузеров, собственную систему классов и другие интересные вещи. Например, интересна система подгрузки зависимостей, аналогично реализованной в Dojo Toolkit. Вообще проект интересен именно с точки зрения архитектуры, о практической необходимости и вообще применимости MVC в JavaScript еще можно долго обсуждать. Но изучить пакет все же стоит.
Qooxdoo — этот проект сложно назвать новым. Признаться честно, с него вообще началось мое знакомств о веб-миром и JavaScript. И пусть он обладает навороченной объектной структурой и неважнецкой производительностью, но если забыть про ExtJS, то он первый приходит на ум как кандидат на построение визуальных интерфейсов, неотличимых от своих десктопных собратьев. Помню, как изучая его примеры, я просто поражался — придя с мира Delphi я до того еще слабо представлял, что же можно сделать в браузере. Конечно, с того времени прошло уже много версий, и думаю, с производительностью там стало все намного лучше (да нет, не особо, вот тестировал примеры в Google Chrome), но вот со внутренностью наверное нет — там внутри достаточно серьезная и сложная архитектура, не в пример современным решениям. Но, все равно спасибо разработчикам — именно это решение подтолкнуло меня перейти в веб-технологии.
![qooxdoo_widgets](http://abrdev.com/wp-content/uploads/2008/12/qooxdoo_widgets-300x265.png)
В оригинальном обзоре рассматривали еще несколько библиотек — Archetype JavaScript Framework (интересный именно компонентной архитектурой и системой работы с зависимостями), June, UIZE, SimpleJS, Fleegix — однако эти библиотеки мне не показались достаточно интересными для рассмотрения. Базовый функционал везде почти одинаковый и его если и рассматривать, то разве что в разрезе конкретных тестов на скорость. Но основывать разработку серьезного проекта на пусть даже перспективной, но малораспространенной библиотеке — это, по меньшей мере, плохо. А вот посмотреть исходные коды и подумать, как применить хорошие архитектурные приемы в своем проекте — это всегда полезно, и если вы будете рассматривать другие библиотеки, то обратите внимания сперва на выше перечисленные проекты, вдруг там есть все, что вам надо?
SproutCore — интересный фреймворк, ориентированный на создание интерфейсных решений в вебе, приближенных к десктопным, в данном случае — к внешнему виду MacOS, так как SproutCore считается, по многим публикациям, как веб-продолжение десктопного фреймворка Сocoa, который используется в MacOS. Сама Apple использует этот фреймворк для реализации своих веб-приложений, в частности, именно потому, что они выглядят максимально похоже на родные приложения, стирая грань между вебом и десктопом. В плане виджетов SproutCore выглядит, если честно, очень и очень бледно, судя по примерам на сайте, хотя и работает быстро. До красивостей ExtJS ему еще очень далеко, однако это и не ставилось за цель — если считать, что целью было имитировать в вебе интерфейс Cocoa-программ, то библиотека с этим справляется отлично.
![sprout_widgets](http://abrdev.com/wp-content/uploads/2008/12/sprout_widgets.png)
В принципе, для разработки несложных веб-приложений, особенно на Mac-платформу (хотя ограничение на платформу в веб-среде это странновато), фреймворк отлично подойдет. А еще если мы подумаем, что на iPhone также стоит MacOS, и веб-приложения там самые родные, а с главным конкурентом JavaScript, Adobe Flash платформа Apple/iPhone испытывает сложности, в основном, теоретически/концептуального характера, то ориентация на веб выглядит уже более правильной. Ну что же, посмотрим.
![adobespry](http://abrdev.com/wp-content/uploads/2008/12/adobespry.png)
![spry_rssreader](http://abrdev.com/wp-content/uploads/2008/12/spry_rssreader-300x193.png)
JavaScriptMVC — интересен с концептуальной стороны как пример переноса популярного паттерна проектирования (или архитектуры) на сторону клиента. Сам фреймворк состоит из достаточно большого количества классов, в частности, расширения стандартных объектов для абстракции от браузеров, собственную систему классов и другие интересные вещи. Например, интересна система подгрузки зависимостей, аналогично реализованной в Dojo Toolkit. Вообще проект интересен именно с точки зрения архитектуры, о практической необходимости и вообще применимости MVC в JavaScript еще можно долго обсуждать. Но изучить пакет все же стоит.
![qooxdoo](http://abrdev.com/wp-content/uploads/2008/12/qooxdoo.png)
![qooxdoo_widgets](http://abrdev.com/wp-content/uploads/2008/12/qooxdoo_widgets-300x265.png)
В оригинальном обзоре рассматривали еще несколько библиотек — Archetype JavaScript Framework (интересный именно компонентной архитектурой и системой работы с зависимостями), June, UIZE, SimpleJS, Fleegix — однако эти библиотеки мне не показались достаточно интересными для рассмотрения. Базовый функционал везде почти одинаковый и его если и рассматривать, то разве что в разрезе конкретных тестов на скорость. Но основывать разработку серьезного проекта на пусть даже перспективной, но малораспространенной библиотеке — это, по меньшей мере, плохо. А вот посмотреть исходные коды и подумать, как применить хорошие архитектурные приемы в своем проекте — это всегда полезно, и если вы будете рассматривать другие библиотеки, то обратите внимания сперва на выше перечисленные проекты, вдруг там есть все, что вам надо?