- Matreshka.js: От простого к простому
- 10 причин попробовать Матрешку
- Matreshka.js 1.1: еще больше крутостей
- Matreshka.js: события
1. Чистый JavaScript и HTML
Многие фреймворки пытаются починить веб, создавая собственный язык программирования. Идея Матрешки проста: с вебом всё в порядке. Вся логика, которую пишет программист, находится, как и должна, в JavaScript файлах, а HTML остаётся языком разметки гипертекста. Шутка об HTML программисте должна остаться шуткой.
2. Минимум сущностей
Матрешка не требует создания избыточных сущностей. Благодаря простому синтаксису привязок, связь между JavaScript и HTML может быть описана там же, где и логика. Программисту не требуется задумываться сразу о нескольких вещах, размышляя о балансе полномочий объектов. Вопрос где прописать обработчик: во “вьюхе” или в контроллере отпадает сам по себе. Хотя, никто не запрещает разделить данные и контроллер, разместив их в разных JS файлах.
3. Работай с данными, забудь о представлении
Попробовав популярный (но уступающий под натиском более современных продуктов) фреймворк Backbone, сталкиваешься с серьезным неудобством: объявляя данные, зависящие от UI и UI, зависящий от данных, вам, как правило, требуется создать два обработчика события. Один ловит изменения данных, второй ловит пользовательские действия. Проблема подкрепляется еще тем, что HTML элементы, как правило, совершенно идентичны в рамках приложения: input, select, кастомные виджеты из jQuery UI могут многократно встречаться на странице. Программисту, который реализует еще одну “единицу” приложения (например, форму), приходится пользоваться “копипастой”.
С Матрешкой всё намного проще. Вам нужно лишь однажды объявить привязку (в одном месте, а не в двух), затем работать с данными (как с обычными JavaScript объектами), забыв, что у нас вообще есть представление.
4. Гибкость
Новичку часто непонятно, как перейти на новую архитектуру. Порой, для того, чтоб добавить сторонний виджет, нужно приложить немало усилий, изучая адаптеры, директивы и т. п…
Задавшись вопросом, как прикрутить тот или иной скрипт (например, какой-нибудь jQuery плагин), верным ответом будет, в том числе, «сделаю как знаю». Вывод какого-нибудь виджета, будь то Google Maps или одна из многочисленных галерей, делается так, как указано в официальной документации к виджету. Матрешка создана с любовью к VanillaJS.
5. Ненавязчивая архитектура
Большинство популярных фреймворков закладывают принципы структурирования кода, ограничивая творчество программиста, как архитектора ПО. Я не считаю, что это очень плохо, хотя часто задаешься вопросом «а почему нужно делать именно так»?..
Матрешка не заставляет использовать определенную структуру кода, и не принуждает пользоваться хорошими, но, возможно, не самыми удачными решениями. Вы сами выбираете паттерны проектирования и структурирования приложения. Хоть Матрешка и позиционируется, как фреймворк, но, скорее, это библиотека, уменьшающая объем предстоящей работы.
6. Меньше кода
Самая главная задача, которая ставилась при разработке фреймворка — решение максимально большого круга задач (в разумных пределах). Поэтому, результирующий код, как правило, выглядит достаточно компактно, особенно прибегая к помощи ECMAScript 6.
7. Легко понять, что происходит
Из-за ненавязчивости рекомендаций и отсутствии жесткого регламентирования любой, кто не знаком с фреймворком, но хорошо знает JavaScript, скорее всего, разберется в вашем коде (если вы, конечно, сами хороший программист :). При создании методов, одним из важных приоритетов была очевидность их функциональности.
8. Легко начать
Для того, чтоб начать работать с Матрешкой, нужно всего лишь знать назначение трех классов и нескольких методов. Остальное — синтаксических сахар. В документации они помечены красным флажком, чтоб было легче ориентироваться.
9. Небольшой размер
Матрешка достаточно компактна для фреймворка. На момент написания статьи Матрешка весит меньше 38K/12K зазиповано.
10. Поддержка синтаксиса ECMAScript 6
Поддержка JavaScript следующего поколения является одной из самых приоритетных задач. На сегодняшний день, Матрешка, кроме основных возможностей ECMAScript 6, поддерживает классы и циклы for..of. В дальнейшем, при развитии языка, новые возможности будут добавляться в первую очередь.
11. Документация (бонусная причина)
Все знают, что программист обязан знать английский язык, так как большинство актуальных материалов и статей, в первую очередь, выходят на английском. Но я уверен, что большинство людей, читающих эту статью, несмотря на свои знания английского (от посредственных до отличных), отдадут предпочтение русскоязычным материалам.
Документация, начиная с этого года будет выходить на двух языках: на русском и английском. Причем, обе версии, являясь официальными версиями, будут всегда оставаться актуальными.
Вот такой краткий пост получился. Всем пятницы!