Выпуск 44: Шашечки или Ember.js?

В гостях Андрей Михайлов (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)
  • stm

    > громостскими
    wut?

    • бывает… пофиксил
      зато я теперь знаю, что есть люди, внимательно читающие шоуноты 😉

      • stm

        Шоуноты хорошая годная тема, а развернутые так ваще круто: сразу можно понять о чем конкретно пойдет речь. Жаль что в этом выпуске нету ссылок на время.

  • Pavel

    > сервисы как хранилище состояния независимых компонентов
    сервисы как хранилища состояния независимых компонентов

    > сравнении подходов “собери свой фреймворк сам” и “монолитный фреймворк”
    сравнения подходов “собери свой фреймворк сам” и “монолитный фреймворк”

  • Pavel

    Кстати отличный получился выпуск. Спасибо
    Единственное что не обсудили, как ember работает на мобильниках.
    То что он прямо заточен под админки – я уже понял.
    А вот будет ли он работать нормально на мобильниках? Если приложение будет весить 1.5Mb в gzip-е.

    • Работает вполне сносно. Есть коллекции мобильных компонентов, высокоуровневые абстракции для жестов и т. п.

      У Ember нет аналога React Native, Ember делает ставку на мобильные технологии. К слову, есть информация, что на современных мобильниках React работает шустрее React Native, так что польза от последнего сомнительна.

      Благодаря паттерну Progressive Web Apps, в ближайшем будущем вэб-приложение сможет пользоваться всеми преимуществами нативного приложения (пуш-уведомления, иконка на рочем столе, отдельная позиция в списке задач, все API и т. п.) без необходимости установки через app store.

      • Igor Shubovych

        >> К слову, есть информация, что на современных мобильниках React работает шустрее React Native, так что польза от последнего сомнительна.

        Если Андрей Листочкин имеет в виду доклад React Native vs React WebView с последнего Framework days (
        http://frameworksdays.com/event/most-js-fwdays-2016/review/react-native-vs-react-webview), то там были следующие выводы:
        – React WebView такой же по скорости или даже чуть-чуть быстрее (из-за большей отточености и оптимизаций Webkit)
        – React WebView значительно (в несколько раз) уступает по энергоэфективности, батарейка садится очень быстро
        – React WebView значительно (в 1.5-2 раза) дешевле для разработки типовых приложений

        Так что там не все так однозначно.

  • Igor Shubovych

    Классный выпуск. Хоть и длинный. Когда ворвался Листочкин, вообще жара пошла.

  • Ivan Voischev

    По большей части я понимаю о чем ребята говорят про ощущения присутствия в JS тусовках 🙂 >”чувствую себя как Новодворская. Вы все дураки и не лечитесь…”. У меня так же только про использования полного БЭМ стека)

  • Ivan Voischev

    Функционал –> Функциональность 😉

  • woto

    Очень интересный выпуск, спасибо.
    Даже вынужден был наконец найти вас после этого выпуска, чтобы поблагодарить )

  • Anatol123

    Спасибо, один из лучших подкастов. Длинный, но насыщенный – второе важнее )

  • Amib Dexer

    ember это rails в браузере
    спасибо – наконец то выкину всё эти маркетинговые реакты редюксы ангуляры и прочий зоопарк