На днях вышел первый релиз нового многообещающего open source JavaScript фреймворка «DAAJS». Он может быть интересен front-end разработчикам в качестве базы для создания веб- и мобильных приложений.



В основе идеологии фреймворка лежат class-oriented и event-driven подходы. Вся функциональность реализована в виде классов. Классы представлений на основе шаблонов и алгоритмов генерируют компоненты пользовательского интерфейса и инкапсулируют непосредственно связанное с ними поведение (такое как разворачивание ветвей древовидных списков, раскрытие пунктов меню, перемещение элементов и т.п.). Механизм событий служит для организации как взаимодействия пользователя с интерфейсами — на уровне классов, а не отдельных DOM-элементов — так и для реализации сложного поведения, требующего участия множества методов или других классов. Любые события внутри фреймворка представлены в едином, унифицированном формате.

Фреймворк реализует собственную модель классов, поддерживающую множественное наследование и другие интересные технологические и синтаксические механизмы. Классы фреймворка не зависят от платформы и могут с одинаковым успехом исполняться как на стороне клиента, в браузере, так и на стороне сервера под Node.js. Что, в перспективе развития Node.js и ее поддержки хостерами в качестве серверной платформы, открывает возможность для использования одного и того же кода для клиентской и серверной частей проектов. Не считая того, что код классов DAAJS, использующий минимум специфических для JavaScript особенностей и «трюков», достаточно легко отображается на языки программирования, преобладающие на данный момент в качестве средств back-end разработки.

Фреймворк предлагает стандарт описания пользовательских интерфейсов, основанный на JSON, нативно понимаемый JavaScript и не менее легко понимаемый другими программными средствами. Что позволяет использовать одни и те же описатели для генерации HTML на сервере и на клиенте — равно как и для динамического перестроения интерфейсов в AJAX и SPA проектах. Описатели представляют собой древовидные списки классов представлений с параметрами, позволяющими настраивать конечные представления в широком диапазоне, включая, естественно, связывание с моделями данных и со специализированными обработчиками событий. Кроме того, фреймворк поддерживает собственный простой «язык разметки JSON» (DAA-script), предоставляющий «синтаксический сахар» для создания сложно структурированных JSON-описателей.

DAAJS является MVC-фреймворком и, помимо средств для работы с представлениями и событиями, предоставляет ряд средств и паттернов для работы с моделями данных. В отличие от ряда других фреймворков, DAAJS предлагает использовать единое модельное пространство и доступ к моделям с помощью непосредственной адресации (интерфейс «путей») и SQL-подобного языка запросов, что позволяет в некотором смысле отождествить это модельное пространство с собственной мини базой данных на клиентской стороне, «живущей», однако, только пока пользователь остается на веб-странице. Причем, в это пространство входят не только модели конечных отображаемых данных, но и модели самих интерфейсов, полученных из JSON-описателей. Это особенно полезно для Single Page Applications, однако может найти широкое применение и в многостраничных проектах, нагруженных серьезной интерактивностью.

Большое внимание в DAAJS уделено и работе со сложно структурированными моделями, главным образом — с «деревьями» и «древовидными таблицами». Средства фреймворка позволяют добавлять, вставлять, удалять, перемещать древовидные элементы, выполнять сортировку «таблиц» по множеству полей с помощью, опять же, SQL-подобного синтаксиса. Подход DAAJS нацелен на максимальную унификацию работы с моделями между серверной и клиентской сторонами.

Идеология построения интерфейсов с помощью классов представлений и унификации описателей предполагает широкое использование и гибкую настройку CSS. Для достижения унификации, DAAJS реализует механизм «Runtime CSS-автопрефиксинга», иными словами, основываясь на CSS-декларациях, соответствующих стандартам CSS, автоматически подбирает работающие свойства и значения «с префиксами вендора» в случае, если текущий браузер не поддерживает стандартные CSS-свойства непосредственно. Этот механизм позволяет как присваивать DOM элементам «inline» CSS свойства, так и определять и переопределять CSS-правила «на лету», не заботясь о проблемах поддержки свойств браузерами (если, конечно, речь не идет о совсем древних экземплярах).

Текущая версия фреймворка представляет собой первую «публичную бету». Ему еще предстоит пройти несколько важных шагов по завершающей отделке, отладке и публикации ряда классов, пока находящихся в стадии доработки. В частности, в ближайших версиях появятся или будут расширены классы для работы с датами и временем, с анимацией, с «формами», с асинхронными HTTP-запросами и многое другое. Также, будет постоянно расширяться и дополняться документация, готовится перевод всей документации на русский язык (на данный момент она доступна только на английском языке).

Более подробная информация, документация, ссылки на скачивание и установку фреймворка с помощью NPM доступна на официальном сайте проекта: daajs.org

Заинтересовавшихся приглашаю к тестированию, сотрудничеству и, конечно, коммуникации!

Комментарии (14)