В гостях Андрей Михайлов (lolma.us) с рассказом про достоинства, отличительные черты и недостатки Ember.js. Где-то с середины выпуска к прямой трансляции также подключился евангелист Ember.js Андрей Листочкин (@listochkin) и поддержал коллегу по цеху, после того как мы слегка подзавалили Андрея Михайлова вопросами и своим изрядным скептицизмом. В целом получился подробный анализ фреймворка, экскурс в историю его развития, сравнение его с актуальными конкурентами и лучшими практиками. Надеемся у вас теперь достаточно знаний, чтобы как минимум дать Ember.js шанс в следующем большом или маленьком проекте, либо воспользоваться для прототипирования.
Изложение того, что обсудили (в нехронологическом порядке):
- Вводные про бэкграуд Андрея и как он пришел к Ember.js
- какие фреймворки использовал до этого
- как остановил внимание на Ember.js
- эффект утенка – почему не все готовы перелезать на другие фреймворки
- Преимущества и отличительные черты
- сразу можно сосредоточиться на бизнес логике
- готовый поддерживаемый бойлерплейт (ember-cli), который поддерживает все фичи (Angular CLI украл идею)
- идеален для прототипирования
- стабильность и обратная совместимость при достаточно высокой скорости развития
- декларативный синтаксис шаблонизатора Handlebars, а под капотом быстрый Glimmer 2
- использование своей системы классов: геттеры и сеттеры для обновления данных
- developer joy, или как сделать разработчика счастливее
- модели как хранилища данных, адаптеры и сериалайзеры для синхронизации с бекендом
- простота интеграции с любыми бекендами
- и в том числе и WebSockets очень легко (ember-phoenix)
- server side rendering (ember-cli-fastboot)
- аналог Express в браузере для прототипирования и тестирования (ember-cli-mirage)
- активное и открытое сообщество
- система аддонов, благодаря которой можно внедриться в любой процесс фреймворка
- большинство аддонов консистентны и учитывают другие аддоны в экосистеме
- новые аддоны появляютя не сразу, но на них легко перелезть и комьюнитие быстро переходит
- богатая документация
- нет конкретного владельца, развивается независимым сообществом
- сообщество очень открытое – все решения принимаются публично, есть понятная процедура принятия стандартов
- каждый 6 недель релизы (deprecation policy, feature flags, LTS-релизы)
- система тестирования из коробки с бойлерплейтами, тулинг для тестирования асинхронного кода
- ленивая загрузка модулей и rollup.js
- Спорные вопросы и сравнение с известными подходами
- сравнение подходов “собери свой фреймворк сам” и “монолитный фреймворк”
- есть ли известные проекты на Ember.js: builtwithember.io
- управление состоянием: стандартный подход и ember-redux
- сервисы как хранилища состояния независимых компонентов
- совпадение ли то, что бекенд часто тоже на Ruby on Rails? сравнение философии Rails и Ember.js
- управление зависимостями, когда используешь много аддонов
- переиспользуемость аддонов (компонентов), расширение их функционала без форка
- геттеры и сеттеры и реактивное программирование
- склеивание с другими фреймворками, особенно при переезде с легаси
- Недостатки
- невозможна из коробки генерация динамической DOM-структуры, где заранее неизвестна вложенность элементов
- геттеры и сеттеры стали громоздкий после отказа от CoffeeScript
- сложно внедрить TypeScript
- run-loop запросов через очередь приводят к сложностям с отладкой при падениях
- мало ресурсов вкладываются в маркетинг, поэтому он не такой популярный, как некоторые другие
- самый большой размер дистрибутива, особенно когда много аддонов
- нет аналога react-native
- надо думать при работе с ним: Ember.js way, когда ищешь аддон вместо написания простыни кода на каждый кейс
- Будущее