Ember Book — подробно о фреймворке для создания масштабных веб-приложений

Ember Book

В конце ноября прошлого года во мне окончательно укоренилась мысль, что полученные за последних несколько лет знания про EmberJS надо бы закрепить в «письменном» виде. Так как последней большой письменной работой была моя магистерская диссертация аж 6 лет назад (которая, как и ее автор, состоит на ~70% из воды), а заметки-пятиминутки тяжело считать серьезными публикациями, то задача передо мной стала непростая.

Я считал, что три зимних месяца мне хватит, чтоб сделать все от А до Я. Опытные PM или BA услышав это посмеялись бы (ведь они знают, что разработчики всегда очень оптимистично ставят сроки). И правда, у меня ушло в 2.5 раза больше времени. Тут те же опытные PM или BA сказали бы, что такой коэффициент — это еще нормально.

Про Ember написана не одна и не две книги. За последних 5 лет их было выпущено около дюжины. Речь идет не о печатных книгах, а об электронных. Часть их них уже морально устарела (Ember, как и JS в целом, развиваются очень быстро), а другая часть — очень достойные работы. Разумеется, все они написаны на английском. Современный разработчик просто обязан владеть иностранным языком на хорошем уровне, но куда комфортнее читать что-либо на родном языке, согласитесь. Что ж, планка установлена и надо ее брать.

В самом начале кроме идеи и голого энтузиазма у меня не было ничего. Но, к счастью, проблемы «чистого листа» не возникло. Как-то сразу в голове сложилось приблизительное содержание будущей публикации и дело пошло.

Так сложилось, что лицензионного Microsoft Office у меня нет, ставить паленку вроде уже и не солидно, а орфографические и прочие ошибки как-то надо отлавливать. Под рукой был верный PhpStorm, куда я добавил словарь русского языка. Уже неплохо. В качестве формата файлов книги был выбран Markdown. Дешево и сердито, но дает все необходимое (выделение, курсив, абзацы, списки и т.д).

Жизнь учит, что хранить важные данные в одном месте — не безопасно. В конце 2016-го я еще думал над тем, чтоб хранить всю книгу на GitHub в открытом репозитории. Даже написал свой небольшой сборщик, который из md-файлов создавал один большой html-документ с читабельной разметкой (gulp, grunt и прочие взять не захотел). В нем даже была отдельная таблица стилей для @media print, с помощью которой можно было сделать распечатку в формате А5. Время шло и идея книги как большого html-документа мне нравилась все меньше. Уже не раз и не два я заглядывался на Leanpub. И в какой-то момент я таки созрел до идеи, что хочу сделать публикацию у них. Параллельно с этим я решил опробовать еще и закрытые репозитории на GitHub (хорошо что Leanpub умеет с ними работать). Суммарно получилось дороговато, но опыт оказался полезный.

Кратко о том, что пришлось «пропустить через себя», чтоб получить результат:

  • Документация ember-cli
  • Документация EmberJS. Её можно сколько угодно ругать за неполноту и неточности, но без этой документации вообще никак.
  • Большой список вопросов из репозитория Ember. Пришлось копаться в вопросах даже за 2012 год.
  • Исходники самого Ember. Тут реально работает принцип «если не знаешь, как что-то работает, то посмотри на его тесты». В нескольких «узких» местах это помогло.
  • Репозиторий с официальными руководствами emberjs/guides. В нем удалось узнать, что некоторые вещи, описанные в документации, уже устарели, но по каким-то причинам не были удалены оттуда.
  • Репозиторий с RFC emberjs/rfcs. В ряде случаев тут удалось получить больше информации, чем в руководствах.
  • Множество заметок и «скринкастов» от разработчиков и компаний со всего мира.
  • Десяток-другой аддонов для Ember. Пришлось пройтись как по документации, так и по исходникам. Однозначно стоило того.
  • Форум discuss.emberjs.com и куча вопросов на stackoverflow.com.
  • Отдельно стоит упомянуть аддон ember-data. Его пришлось прошерстить очень тщательно.

Ember нельзя назвать простым. Но его сложность не одинаковая. Есть темы, которые достаточно легко понять, а вот с некоторыми приходится повозиться. Ниже список сложных вещей в Ember по моему субъективному мнению:

  • extend, reopen, reopenClass и их отличия от аналогов в обычном JS
  • Написание макросов для вычисляемых свойств
  • Субсостояния loading и error при загрузке страницы или переходе между ними (особенно их «всплытие» в Роутах)
  • Closure actions
  • Контекстные компоненты
  • Связи между Моделями (инверсные, рефлексивные, полиморфные и т.д.)
  • Циклы выполнения задач (run-loop)
  • Тестирование некоторых архитектурных единиц
  • Внедрение зависимостей

Книга распространяется через Leanpub абсолютно бесплатно и доступна по ссылке ember-book. Уверен, что не всем будет интересно переходить по ссылке, потому скопирую сюда «О Книге»:

Книга предназначена как для новичков, которые не знакомы с Эмбером, так и для опытных разработчиков, которые тоже найдут для себя кое-что интересное и полезное.

В первой главе вы познакомитесь с ember-cli. Это консольная утилита без которой сейчас трудно представить работу с Эмбером. Создание приложения, генерация файлов, готовая файловая структура, запуск тестов, запуск сервера для разработки — это не полный список задач, с которыми справляется ember-cli.

Далее вы узнаете, что такое Ember.Object и чем он отличается от обычных объектов в JS. Что за «магия» скрывается за методами get и set? Как работает связывание и обновление данных внутри экземпляров Ember.Object? Почему вычисляемые свойства так хороши? На все эти вопросы вы получите исчерпывающие ответы.

В третьей главе мы поговорим об архитектурных единицах в Эмбере. Их много, но никто не остается без внимания:

  • Роутер и роуты
  • Данные (Хранилище, Модели, Записи, Адаптеры, Сериализаторы, Трансформации)
  • Шаблоны (основные конструкции и вспомогательные функции)
  • Контроллеры
  • Компоненты (от простых до контекстных)
  • Внедрение зависимостей (Инициализаторы Приложения и его Экземпляров, а так же Сервисы)

Код сам по себе — это хорошо. А код, покрытый тестами, выглядит еще лучше. Четвертая глава полностью посвящена тестированию. В Эмбере покрыть тестами можно все. Нам доступны интеграционные, приемочные и юнит-тесты. Помимо ember-qunit, мы рассмотрим еще ember-cli-mirage и ember-cli-page-object, благодаря которым тестировать код и вести разработку будет куда проще.

Эмбер очень активно развивается. На момент, когда были написаны первые строки этой книги, актуальной была версия ember@2.10.0. Ближе к завершению вышла версия ember@2.13.0. Вполне может быть, что когда вы будете читать это, то выйдет уже и 2.14. Код из примеров книги не содержит никаких особенностей под конкретную версию (Эмбер младше 2.4 все-таки использовать не рекомендуется).

Что не вошло в книгу? За бортом остались pods, обновление Эмбера в рамках проекта, «выкатка» собранного приложения. Эти темы хорошо описаны в документации к ember-cli. Так же мы не разбирали Ember FastBoot.

, , ,

2 комментария
  1. vvscode Said:

    GitBook не зашел? пошарил новость, где знал. Спасибо

  2. KronuS Said:

    Видел GitBook, но почему-то захотелось именно на Leanpub. За share спасибо 🙂

Оставить комментарий

Top ↑ | Main page | Back