В гостях Андрей Михайлов (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, когда ищешь аддон вместо написания простыни кода на каждый кейс
  • Будущее
    • аналог PRPL из коробки, который частично уже давно реализован и работает
    • ставка на PWA на фоне кризиса нативных приложений
    • ставка на веб-стандарты
    • улучшение поддержки написания мобильных приложения
Скачать выпуск (mp3, 45 MB)

Мы наконец-то запустили онлайн трансляции и чат в телеграмме для telegram.me/RadioJSPodcast
Присоединяйтесь к нему, чтобы участвовать в обсуждениях во время трансляций.

В этом выпуске продолжили разговор с Алексеем Охрименко, но уже на немного отдаленные темы вокруг и около Angular, включающие подробный разбор нового RxJS, а также паттерна PRPL, который был недавно вынесен на суд общественности со стороны Google. Немного помусолили тему HTTP 2.0 и его агрессивного маркетинга.

Пики

Скачать выпуск (mp3, 39 MB)