Выбрать технический стек внешнего интерфейса сложно. С появлением новых библиотек и фреймворков, казалось бы, каждый день, и столько же уходят в безвестность, ландшафт веб-разработки является изменчивым. В такой среде крайне важно, чтобы заинтересованные стороны нового проекта тщательно изучали и сопоставляли доступные решения друг с другом. Такие вопросы, как стабильность, долгосрочная поддержка и техническое обслуживание, часто расходятся с желанием разработчиков быть в курсе самых современных и передовых технологий. Есть несколько библиотек, которые неизбежно вступают в этот разговор, но Ember.js — одно из немногих интерфейсных решений, которое отлично справляется с удовлетворением потребностей и желаний всех сторон.

Почему Эмбер?

Ember — это фреймворк JavaScript, спроектированный таким образом, чтобы дать вам практически все необходимое для создания даже самых крупных веб-приложений. Согласно собственному слогану, Ember является «фреймворком для амбициозных веб-разработчиков» и предоставляет вам полный набор инструментов для создания современных одностраничных веб-приложений. Он даже используется в мобильных и настольных приложениях на таких популярных платформах, как Apache Cordova и Electron. Первоначально выпущенный в 2011 году и являющийся ответвлением SproutCore (фреймворка, в значительной степени разработанного Apple), Ember в той или иной форме существует уже более десяти лет — вечность для интерфейсных веб-технологий.

Из всех самых популярных доступных библиотек и пакетов JavaScript Ember — один из немногих, который можно считать настоящим «фреймворком». В последнее время такие термины, как «фреймворк» и «монолитный», имеют тенденцию отпугивать некоторых разработчиков интерфейса, обычно из-за их кажущейся тяжести по сравнению с другими более легкими библиотеками. И хотя верно то, что Ember, байт за байтом, является одним из самых больших пакетов по сравнению с его конкурентами, это почти сравнение яблок с апельсинами. После того, как вы, наконец, добавите все остальные вспомогательные пакеты и зависимости, необходимые для создания сопоставимого приложения, например, на React или Vue.js, конечный размер полезной нагрузки часто будет соответствовать или превышать размер Ember. И вдобавок ко всему, теперь вы отвечаете за управление большой взаимосвязанной паутиной зависимостей, должны убедиться, что все совместимо и хорошо сочетается со всем остальным. В отличие от него, Ember — это «батарейки в комплекте», с таким количеством функций и функций, которые ожидаются от современного веб-приложения, «из коробки».

Концепция «батарейки в комплекте»

Одна из наиболее важных функций, заложенных в Ember, включает в себя современный и чрезвычайно производительный компонентно-ориентированный слой представления, который сам по себе является отдельной библиотекой под названием Glimmer.js. Хотя он был создан с учетом Ember, его можно использовать самостоятельно (например, для очень маленьких приложений или встроенных виджетов). Все компоненты Glimmer на 100% совместимы с Ember и могут быть добавлены в любое приложение Ember. Компоненты Glimmer используют надмножество синтаксиса Handlebars для определения своих шаблонов и очень декларативны и легковесны. Это не дурак, когда дело доходит до производительности рендеринга. Glimmer является одним из лидеров отрасли в этой категории, обеспечивая отличную скорость и отзывчивость даже на недорогих телефонах и устройствах, часто практически без настройки разработчика.

Лучшая в своем классе полнофункциональная система маршрутизации для сопоставления URL-адресов браузера со страницами и состоянием приложения — еще одна центральная опора фреймворка. С самого начала основная команда Ember осознала, что одной из самых сильных сторон Интернета как платформы приложений является URL-адрес, и насколько он важен для обеспечения возможности совместного использования и обнаружения, которые ожидают пользователи. Имея это в виду, Ember был разработан с нуля вокруг своего маршрутизатора, предоставляя первоклассную поддержку для сопоставления URL-адресов с состоянием приложения, включая глубокую интеграцию и API для таких вещей, как параметры запроса, и все это делает его чрезвычайно декларативным и предельно простым в использовании. внутри логики приложения.

Почти все веб-приложения даже небольшого размера нуждаются в некотором способе управления данными и глобальным состоянием, а также в средствах для сохранения этих данных в базе данных, на сервере или в какой-либо другой бэкэнд-технологии. В Ember это тоже реализовано благодаря включенной сестринской библиотеке Ember Data. Напоминая ORM, Ember Data позволяет вам определять модели и отношения между ними, которые затем используются вместе с настраиваемыми сериализаторами и адаптерами для генерации сетевых запросов к вашему серверному API. Реализация вашего уровня данных с помощью Ember Data открывает множество преимуществ, которые часто сложны и трудны для реализации, например, локальное кэширование или управление запросами данных и восстановление состояния из сред рендеринга на стороне сервера.

Кроме того, Ember Data поставляется с поддержкой общеотраслевой спецификации дизайна и структуры API на основе JSON, которая называется JSON:API. Несмотря на то, что у него есть множество управляющих значений, чтобы настроить его в соответствии с любыми внешними службами, с которыми вам нужно работать, интеграция с бэкэндом, совместимым с JSON: API, обеспечивает чрезвычайно плавный опыт разработки, почти не требуя шаблонного кода для начала взаимодействия с API. Сама спецификация JSON:API также открывает потенциал для множества других преимуществ, таких как предотвращение избыточной выборки данных, выравнивание и нормализация сильно вложенных отношений, стандартизированное разбиение на страницы и многое другое.

С помощью системы надстроек можно легко активировать еще больше востребованных функций. Ember FastBoot позволяет выполнять рендеринг приложений Ember на стороне сервера, что может иметь решающее значение во многих проектах для SEO и сверхбыстрой скорости рендеринга страниц. Ember Engines открывает возможность разбивать приложение на логические части, что позволяет выполнять такие действия, как разделение кода и загрузка кода по запросу, а также упрощает организацию очень больших приложений. Экосистема надстроек Ember сама по себе является большой силой благодаря собственным инструментам Ember, позволяющим очень легко создавать надстройки, а также возможности находить высококачественные сторонние надстройки с помощью таких инструментов, как Ember Observer.

Не менее важно, хотя, возможно, и не так захватывающе и эффектно, Ember также имеет комплексную интегрированную платформу тестирования, построенную поверх QUnit. Мало того, что запуск и проверка модульных тестов встроены в основной цикл разработки, но создание фактического шаблона самих тестов происходит автоматически с помощью командной строки Ember, что действительно является основой превосходного опыта разработчиков Ember.

Счастье разработчика

Ember CLI — это инструмент командной строки, который предоставляет множество функций, от создания, создания и запуска приложений и надстроек Ember до выполнения модульных тестов и создания стандартного кода для общих модулей и шаблонов с использованием «чертежей». Ember CLI настолько важен для впечатляющей скорости и простоты процесса разработки Ember, что программное обеспечение даже было напрямую разветвлено и интегрировано его конкурентами, такими как AngularJS. Эргономика разработчика, позволяющая легко запускать новые приложения Ember за считанные минуты или создавать и тестировать их с помощью одной команды, бесценна, особенно при адаптации новых членов команды или передаче проектов другим командам или внешним сторонам.

Функциональность, подобная «чертежам» Ember CLI, действительно работает только благодаря приверженности Ember философии разработки «соглашение важнее конфигурации». Следуя по стопам других фреймворков, таких как Ruby on Rails, Ember имеет набор правил о том, как приложение должно быть структурировано и организовано, вплоть до расположения и именования файлов и модулей. Следование этому набору соглашений позволяет приложениям Ember быть предсказуемыми и согласованными, что часто значительно уменьшает количество шаблонной логики и кода, которые требуются другим библиотекам для соединения всего вместе. Кроме того, это приводит к тому, что все приложения структурно выглядят более или менее одинаково, даже в разных командах или компаниях. Это огромный выигрыш для производительности, поскольку перемещение ресурсов разработчиков и привлечение новых разработчиков к проектам может привести к гораздо более короткому времени ввода в эксплуатацию.

Стремление Ember к стабильности и поддержке — еще один основной принцип, который отличает Ember от других. Его выпуски регулируются Semantic Versioning, или SemVer, которая представляет собой спецификацию, диктующую набор правил и требований относительно того, как и когда должны изменяться номера версий по мере публикации новых выпусков. SemVer гарантирует, что разработчики не будут застигнуты врасплох несовместимыми с предыдущими версиями изменениями при обновлении Ember, поскольку он может делать это только в выпусках с номерами основных версий, в то время как промежуточные второстепенные выпуски могут только объявлять устаревшими общедоступные API и функциональные возможности. Ember также регулярно публикует выпуски LTS (долгосрочная поддержка), что дает проектам, заблокированным на более старых версиях, уверенность в том, что критические исправления будут доступны в течение длительного периода после его первоначального выпуска.

Кто использует Эмбер?

На протяжении многих лет Ember получала постоянную поддержку от многих известных компаний, работающих во многих различных типах продуктов и отраслей. Ember не только получил свое начало от программного обеспечения с открытым исходным кодом Apple, технический гигант продолжает использовать эту структуру по сей день — ярким примером является приложение iTunes Apple Music. LinkedIn, еще один большой сторонник Ember, реализовал с его помощью свое основное веб-приложение и даже нанял некоторых членов основной команды Ember. LinkedIn регулярно поддерживает проект с открытым исходным кодом, спонсируя и выделяя время своим разработчикам для работы над новыми инициативами и функциями. Другими известными пользователями Ember являются Microsoft, Netflix и Square, среди многих других.

Недостатки

Хотя Ember — фантастическое решение для широкого круга проблем, оно, безусловно, не лишено недостатков и может не подходить для некоторых проектов. Из-за широкого спектра своих API и концепций Ember часто может быть пугающим для новых разработчиков, с более высокой кривой обучения, чем другие библиотеки (особенно те, которые ориентированы только на уровень представления, такие как React или Vue.js). . Тем не менее, это было и остается точкой улучшения, поскольку такие вещи, как компоненты Glimmer и его недавний выпуск Octane edition, работали над оптимизацией и упрощением концепций, с которыми сталкиваются разработчики, делая Ember все более и более доступным.

Популярность и размер сообщества — еще одна область, в которой Ember заметно отстает по сравнению с гигантами React и AngularJS. Огромную популярность этих библиотек трудно не заметить — их обширные сообщества внушают определенную уверенность в том, что они будут часто обновляться, исправления ошибок будут оперативными и что, вероятно, они никуда не исчезнут в ближайшее время. Большее количество разработчиков и проектов, использующих определенный фреймворк, также обычно означает, что его легче нанять. Для сравнения, Ember имеет значительно меньший кусок пирога внешнего интерфейса, но сообщество, которое у него есть, чрезвычайно преданное и открытое. Часто легко получить помощь и ответы, даже напрямую от членов основной команды, по таким каналам, как официальный сервер Discord.

Итак, почему Эмбер?

При запуске нового проекта, независимо от того, рассчитан ли он на 2 месяца или 2 года, имеет одного разработчика или дюжину, почти всегда можно привести веские доводы в пользу Ember. Сочетание современных функций JavaScript и отличных инструментов разработки, а также долговечность, приверженность стабильности и предсказуемость выпусков делают его привлекательным вариантом как для разработчиков, так и для заинтересованных сторон проекта.

В неопределенной и постоянно меняющейся среде современной фронтенд-разработки выбор правильной технологии всегда будет сложной проблемой, но Ember может немного упростить ее.

Первоначально опубликовано на https://www.gavant.com 23 ноября 2021 г.