- PVSM.RU - https://www.pvsm.ru -
Документация на русском [2]
Github репозиторий [3]
Многие фреймворки пытаются починить веб, создавая собственный язык программирования. Идея Матрешки проста: с вебом всё в порядке. Вся логика, которую пишет программист, находится, как и должна, в JavaScript файлах, а HTML остаётся языком разметки гипертекста. Шутка об HTML программисте должна остаться шуткой.
Матрешка не требует создания избыточных сущностей. Благодаря простому синтаксису привязок, связь между JavaScript и HTML может быть описана там же, где и логика. Программисту не требуется задумываться сразу о нескольких вещах, размышляя о балансе полномочий объектов. Вопрос где прописать обработчик: во “вьюхе” или в контроллере отпадает сам по себе. Хотя, никто не запрещает разделить данные и контроллер, разместив их в разных JS файлах.
Попробовав популярный (но уступающий под натиском более современных продуктов) фреймворк Backbone, сталкиваешься с серьезным неудобством: объявляя данные, зависящие от UI и UI, зависящий от данных, вам, как правило, требуется создать два обработчика события. Один ловит изменения данных, второй ловит пользовательские действия. Проблема подкрепляется еще тем, что HTML элементы, как правило, совершенно идентичны в рамках приложения: input
, select
, кастомные виджеты из jQuery UI могут многократно встречаться на странице. Программисту, который реализует еще одну “единицу” приложения (например, форму), приходится пользоваться “копипастой”.
С Матрешкой всё намного проще. Вам нужно лишь однажды объявить привязку (в одном месте, а не в двух), затем работать с данными (как с обычными JavaScript объектами), забыв, что у нас вообще есть представление.
Новичку часто непонятно, как перейти на новую архитектуру. Порой, для того, чтоб добавить сторонний виджет, нужно приложить немало усилий, изучая адаптеры, директивы и т. п…
Задавшись вопросом, как прикрутить тот или иной скрипт (например, какой-нибудь jQuery плагин), верным ответом будет, в том числе, «сделаю как знаю». Вывод какого-нибудь виджета, будь то Google Maps или одна из многочисленных галерей, делается так, как указано в официальной документации к виджету. Матрешка создана с любовью к VanillaJS [4].
Большинство популярных фреймворков [5] закладывают принципы структурирования кода, ограничивая творчество программиста, как архитектора ПО. Я не считаю, что это очень плохо, хотя часто задаешься вопросом «а почему нужно делать именно так»?..
Матрешка не заставляет использовать определенную структуру кода, и не принуждает пользоваться хорошими, но, возможно, не самыми удачными решениями. Вы сами выбираете паттерны проектирования и структурирования приложения. Хоть Матрешка и позиционируется, как фреймворк, но, скорее, это библиотека, уменьшающая объем предстоящей работы.
Самая главная задача, которая ставилась при разработке фреймворка — решение максимально большого круга задач (в разумных пределах). Поэтому, результирующий код, как правило, выглядит достаточно компактно, особенно прибегая к помощи ECMAScript 6.
Из-за ненавязчивости рекомендаций и отсутствии жесткого регламентирования любой, кто не знаком с фреймворком, но хорошо знает JavaScript, скорее всего, разберется в вашем коде (если вы, конечно, сами хороший программист :). При создании методов, одним из важных приоритетов была очевидность их функциональности.
Для того, чтоб начать работать с Матрешкой, нужно всего лишь знать назначение трех классов и нескольких методов. Остальное — синтаксических сахар. В документации они помечены красным флажком, чтоб было легче ориентироваться.
Матрешка достаточно компактна для фреймворка. На момент написания статьи Матрешка весит меньше 38K/12K зазиповано.
Поддержка JavaScript следующего поколения является одной из самых приоритетных задач. На сегодняшний день, Матрешка, кроме основных возможностей ECMAScript 6, поддерживает классы и циклы for..of
. В дальнейшем, при развитии языка, новые возможности будут добавляться в первую очередь.
Все знают, что программист обязан знать английский язык, так как большинство актуальных материалов и статей, в первую очередь, выходят на английском. Но я уверен, что большинство людей, читающих эту статью, несмотря на свои знания английского (от посредственных до отличных), отдадут предпочтение русскоязычным материалам.
Документация, начиная с этого года будет выходить на двух языках: на русском и английском. Причем, обе версии, являясь официальными версиями, будут всегда оставаться актуальными.
Вот такой краткий пост получился. Всем пятницы!
Автор: Finom
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/88492
Ссылки в тексте:
[1] Image: http://matreshka.io
[2] Документация на русском: http://ru.matreshka.io/#home
[3] Github репозиторий: https://github.com/finom/matreshka
[4] VanillaJS: http://vanilla-js.com/
[5] популярных фреймворков: https://github.com/showcases/front-end-javascript-frameworks
[6] Источник: http://habrahabr.ru/post/254927/
Нажмите здесь для печати.