Вышел новый JavaScript фреймворк: DAAJS

    На днях вышел первый релиз нового многообещающего 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

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

    Подробнее
    Реклама

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

      +20
      Вся суть

        +8
        Первое, что я увидел, это еще один новый удобный метод наследования классов.
        http://daajs.org/guide?Classes
        Мне кажется писать сейчас новый стандарт для классов, да еще и с удобным и понятным для рефакторинга объявлением наследуемых методов в строковом параметре через запятую не самая лучшая идея.

        Дальше я смотреть поленился, но предположу наличие аналогичных архитектурных решений и в остальном коде :)
          –1
          Да, при наличии ECMA-2015, идея альтернативной модели классов может показаться странной. Если не учитывать множественное наследование, независимость от платформы исполнения и автоматический байндинг this в вызовах методов предков.
          Объявление наследования классов, а не методов, в строковом свойстве. Методы наследуются автоматически, без каких-либо лишних объявлений.
          +5
          В век обилия JavaScript фрейморков статья о релизе и его главная страница содержит только одну строчку кода
          this.inherited.Method();

          Его описание в некоторый напоминает старый добрый ASP.NET WebForms и горькие воспоминания о сложности кастомизации решений. Может быть фреймворк на самом деле гениален, но для осознания этого не хватает сил-времени-возможности-мотивации детально изучить концпецию и документацию. Учитывая, что люди гораздо сильнее похоже, чем разные, то отсутствие небольшой демо для того, что бы уловить идею, сильно сужает круг потенциальных пользователей фреймворка.
            –1
            Скорее уж еще более старый добрый Delphi ).
            Было бы неплохо предложить идею для такого демо.
            • НЛО прилетело и опубликовало эту надпись здесь
                0
                Спасибо, это интересно.
            +8
            Вот вам коммуникация: talk is cheap, кода в статье нет. Еще раз: в статье о JS-фреймворке нет ни единой строчки кода.
            class-oriented и event-driven подходы

            В чем отличие от Backbone, Ember, ExtJS, несть им числа?
            Фреймворк предлагает стандарт описания пользовательских интерфейсов, основанный на JSON

            Опять таки, в чем отличие от ExtJS?
            Фреймворк реализует собственную модель классо
            в
            Шел 2016 год.

            поддерживающую множественное наследование

            Опять таки, шел 2016 год…

            появятся или будут расширены классы для работы с датами и временем

            Чем momentjs не угодил?
              –1
                –4
                Примеры кода во вводной, обзорной статье показались несколько излишними и преждевременными. В документации очень много и примеров кода, и примеров использования.
                Все фреймворки хороши по своему и имеют различия. Если бы ничего нового не разрабатывалось, с одной стороны, конечно, пришлось бы меньше всего изучать, а, с другой стороны, мы бы так и сидели в каменном веке. Все, когда-то разрабатывалось с начала, с нуля, было никому не известно и непонятно для чего нужно. Что-то остается, что-то уходит.
                Не поняла только момента касательно множественного наследования и 2016-го года. Не поясните?
                  +2
                  Ну вот представьте, идете вы куда-то по своим делам. Фоном у вас мысль, что молотков нынче стало очень много, есть клевые, есть очень причудливые, но тоже, говорят, клевые. И как раз думаете, что надо бы попробовать пару новых моделей, чтобы не отставать от друзей и чтоб рутина не заедала.
                  И тут к вам подбегает человек и предлагает купить очередной такой новый молоток. Но сам молоток не показывает, предлагает идти на склад. По описанию ничем не выделяется, можно и камни колоть, и шурупы закручивать, и гвозди вырывать — это щас много где. А может у него ручка выкрашена краской, на которую у вас аллергия. Может, у него вес не под вашу руку. Продавец ничего об этом не говорит и даже картинку не хочет показывать. А рядом молотками торгуют — глаза разбегаются. И никуда идти не надо, можно прям тут посмотреть, пощупать, постучать.
                  Или вот есть такие продавцы на рынках, у них спрашиваешь, например, картошка твердая или рассыпчатая, а они тебе в ответ: «очень вкусная картошка, берите». Я у таких ничего не беру — они элементарно меня не уважают и доверия не вызывают.
                  Что же до наследования, то оно само по себе не идеальная штука, многие критикуют, предлагая другие методы повторного использования (AOP, компоненты). Множественное наследование, во-первых, умножает эти проблемы, во-вторых, добавляет свою собственную.
                0
                DAAJS реализует механизм «Runtime CSS-автопрефиксинга», иными словами, основываясь на CSS-декларациях, соответствующих стандартам CSS, автоматически подбирает работающие свойства и значения «с префиксами вендора» в случае, если текущий браузер не поддерживает стандартные CSS-свойства непосредственно. Этот механизм позволяет как присваивать DOM элементам «inline» CSS свойства, так и определять и переопределять CSS-правила «на лету», не заботясь о проблемах поддержки свойств браузерами (если, конечно, речь не идет о совсем древних экземплярах).

                О, наконец-то теперь с помощью нового JavaScript фреймворка можно присваивать DOM элементам «inline» CSS свойства «на лету».
                Да и «autoprefixer» больше не нужен.
                0
                Discovered this sign at the W3C headquarters… pic.twitter.com/M9XJ2nW6rW— James Ward (@_JamesWard) 11 февраля 2015 г.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое