Ember.js - это веб-фреймворк JavaScript с открытым исходным кодом , использующий шаблон компонент-сервис . Он позволяет разработчикам создавать масштабируемые одностраничные веб-приложения [4] путем включения в структуру общих идиом , передовых методов и шаблонов из других шаблонов экосистемы одностраничных приложений.
Автор (ы) оригинала | Иегуда Кац |
---|---|
Разработчики) | Основная команда Ember |
Первый выпуск | 8 декабря 2011 г . |
Стабильный выпуск | 3.27.5 [1] / 10 июня 2021 г . |
Предварительный выпуск | 3.27.0-beta.3 / 30 марта 2021 г . [2] |
Репозиторий | Репозиторий Ember.js |
Написано в | JavaScript |
Операционная система | Кроссплатформенность |
Тип | Библиотека JavaScript |
Лицензия | Лицензия MIT [3] |
Веб-сайт | emberjs |
Ember используется на многих популярных веб-сайтах, включая Apple Music , Square, Inc. , Discourse , [5] Groupon , [6] LinkedIn , Live Nation , Nordstrom , Twitch и Chipotle . [7] Несмотря на то, что в первую очередь он считается фреймворком для Интернета, в Ember также можно создавать настольные и мобильные приложения. [8] [9] [10] Наиболее ярким примером настольного приложения Ember является Apple Music , [11] функция настольного приложения iTunes . Торговая марка Ember принадлежит Tilde Inc. [12]
Философия и дизайн
С самого начала Ember был разработан вокруг нескольких ключевых идей:
- Сосредоточьтесь на амбициозных веб-приложениях
- Ember намеревается предоставить полное решение проблемы клиентского приложения. Это контрастирует со многими фреймворками JavaScript, которые начинают с предоставления решения V в MVC ( Модель – Представление – Контроллер ) и пытаются оттуда развиваться.
- Более производительный из коробки
- Ember - это один из компонентов набора инструментов, которые работают вместе, чтобы обеспечить полный стек разработки. Эти инструменты предназначены для немедленного повышения продуктивности разработчика. Например, Ember CLI [13] предоставляет стандартную структуру приложения и конвейер сборки. Он также имеет подключаемую архитектуру и более 3500 надстроек [14] для ее улучшения и расширения.
- Стабильность без застоя
- Это идея о том, что обратная совместимость важна и может поддерживаться, продолжая вводить новшества и развивать фреймворк. [15]
- Предвидение будущих веб-стандартов
- Ember был одним из первых разработчиков и пионеров многих стандартов JavaScript и Интернета, включая обещания [16], веб-компоненты [17] и синтаксис ES6. Иегуда Кац, один из соучредителей Ember, является членом TC39, комитета, ответственного за будущие версии языка JavaScript. [18]
Как и Ruby on Rails , Ember следует принципу « Конвенция важнее конфигурации» (CoC) и принципу « Не повторяйся» (DRY). [19] Он был описан как очень самоуверенный фреймворк, созданный с целью быть очень гибким. [20]
Основные понятия
Ember состоит из пяти ключевых концепций: [21]
- Маршруты
- В Ember состояние приложения представлено URL-адресом. У каждого URL-адреса есть соответствующий объект маршрута, который управляет тем, что видно пользователю.
- Модели
- Каждый маршрут имеет связанную модель, содержащую данные, связанные с текущим состоянием приложения. [22] Хотя можно использовать window.fetch для загрузки объектов JSON с сервера и использования этих объектов в качестве моделей, большинство приложений для этого используют библиотеку моделей, такую как Ember Data.
- Шаблоны
- Шаблоны используются для создания HTML-кода приложения и написаны на языке шаблонов HTMLBars . (HTMLBars - это вариант Handlebars, который строит элементы DOM, а не String.) [23]
- Составные части
- Компонент - это настраиваемый тег HTML. Поведение реализуется с помощью JavaScript, а его внешний вид определяется с помощью шаблонов HTMLBars. Компоненты «владеют» своими данными. Они также могут быть вложенными и взаимодействовать со своими родительскими компонентами посредством действий (событий). Другие библиотеки компонентов, такие как Polymer, также можно использовать с Ember. [24]
- Услуги
- Сервисы - это просто одноэлементные объекты для хранения долгоживущих данных, таких как пользовательские сеансы. [25]
Ember также обеспечивает внедрение зависимостей , декларативный односторонний поток данных, отслеживаемые свойства и автоматическое обновление шаблонов . [26]
Стек программного обеспечения Ember
Ember.js - это один из компонентов полного стека интерфейсов, созданный и поддерживаемый основной командой Ember.
Ember CLI
Ember-cli стремится принести соглашение, а не конфигурацию для создания инструментов. Утилита командной строки, основанная на брокколи , [27] при выполнении команды ember new
генерирует новое приложение Ember со стеком по умолчанию. Это обеспечивает:
- Стандартная структура файлов и каталогов.
- Сервер разработки с живой перезагрузкой. По умолчанию это будет автоматически перестраивать приложения постепенно при изменении файлов, а затем перезагружать приложение на любых открытых вкладках браузера.
- Полная среда тестирования. [28]
- Зависимости управляются через npm . [29]
- Поддержка синтаксиса ES6 / ES7 + (с использованием Babel).
- Управление активами (включая объединение, минимизацию и управление версиями). [30]
Другие функции включают в себя:
- Чертежи, которые являются генераторами кода для создания моделей, контроллеров, компонентов и т. Д., Необходимых в приложении. Также можно создавать собственные чертежи. [31]
- Аддоны, которые предоставляют возможность расширять возможности Ember CLI. [32] Дополнения можно установить, набрав
ember install
. В настоящее время доступно более двух тысяч дополнений [33], включая дополнения для CoffeeScript , LESS , Sass , Compass и Mocha . [34]
Данные Ember
Большинство приложений Ember используют Ember Data [35], библиотеку сохранения данных, предоставляющую многие возможности объектно-реляционного отображения (ORM). Однако также можно использовать Ember без данных Ember. [36]
Ember Data сопоставляет клиентские модели с данными на стороне сервера. Затем он может загружать и сохранять записи и их отношения без какой-либо конфигурации через RESTful JSON API, который реализует спецификацию JSON API [37], при условии соблюдения определенных соглашений. [38] Однако он также легко настраивается и может работать с любым сервером с помощью адаптеров и дополнений. [39] JSON API имеет реализации серверных библиотек для PHP , Node.js , Ruby , Python , Go , .NET и Java . [40] Также задокументировано подключение к серверу на основе Java- Spring . [41]
Первая стабильная версия Ember Data (помеченная как 1.13 для согласования с самим Ember) была выпущена 18 июня 2015 года. [42]
Ember Inspector
Ember Inspector - это расширение, доступное в настоящее время для веб-браузеров Mozilla Firefox [43] и Google Chrome [44], которое, как утверждается, упрощает отладку приложений Ember. Возможности включают возможность видеть, какие шаблоны, компоненты и представления в настоящее время отображаются, видеть свойства любого объекта Ember с пользовательским интерфейсом, который вычисляет привязки и вычисляемые свойства, а также получать доступ к объектам своего приложения с консоли. [45] Если используются данные Ember, можно также увидеть записи, загруженные для каждой модели.
- Инспектор объектов позволяет просматривать и редактировать содержимое среды выполнения объектов и классов Ember.
- Дерево просмотра визуально отображает структуру отрендеренного приложения Ember.
- Вкладка Routes позволяет определять и отслеживать состояние маршрутизатора и URL-адреса, используемые для представления маршрутов.
- Вкладка «Данные» может отображать модели в приложении и записи, загруженные для каждой модели.
- На вкладке «Информация» отображаются версии зависимостей.
- Вкладка Deprecations позволяет получать трассировку стека предупреждений об устаревании, которые не вызывают исключения.
- Вкладка Promises позволяет отслеживать код с помощью асинхронных операций.
- Вкладка Контейнер используется для проверки того, какие объекты были загружены.
- Вкладка Render Performance предназначена для определения того, что замедляет работу приложения Ember.
Fastboot
FastBoot аддон Ember CLI создан основной командой Ember , что дает разработчикам Ember возможность запускать свои приложения в Node.js . Эта функция позволяет конечным пользователям сразу видеть HTML и CSS, при этом JavaScript загружается в фоновом режиме и вступает в силу после полной загрузки. [46]
Жидкий огонь
Liquid Fire обеспечивает поддержку анимации для приложений Ember. [47] Возможности включают анимированные переходы между маршрутами и между моделями в пределах одного маршрута. Он предоставляет DSL для построения отношений пространственных маршрутов, четко отделенных от деталей реализации на уровне представления. Простым примером может служить анимация перехода между экранами, чтобы новый экран появлялся скользящим с одного края браузера. [48]
Процесс выпуска
См. Блог выпусков для получения полного списка выпусков и подробного журнала изменений.
Цикл выпуска
Ember следует шестинедельному циклу выпуска , вдохновленному быстрым циклом выпуска Google Chrome . [49] Каждые шесть недель становится доступным новый выпуск, и в то же время публикуется бета-версия следующего выпуска. Обычно перед выходом следующего крупного релиза выпускается несколько бета-версий, примерно одна бета-версия в неделю.
Начиная с Ember 2.0, связанные проекты, поддерживаемые основной командой, имеют согласованные выпуски и имеют общий номер версии с самим Ember. [50]
Обновление и обратная совместимость
Ember следует семантическому соглашению об управлении версиями . [51] В частности, это означает, что критические изменения вводятся только в основных номерах версий, таких как 1.0, 2.0 и т. Д. Хотя новые функции могут быть добавлены в промежуточных выпусках (1.1, 1.2 ...), а функции являются устаревшими, никаких критических изменений представлены общедоступные API-интерфейсы, и обновление основной версии должно быть максимально простым. Инструменты также находятся в стадии разработки, чтобы упростить процесс обновления. [52]
В дополнение к этому процессу был предпринят ряд шагов для устранения проблем, связанных с обновлением до версии 2.0:
- Фактически, все основные функции 2.0 были введены заранее и распределены по ряду выпусков, чтобы уменьшить многие проблемы, вызванные крупными обновлениями.
- Большинство удаленных функций по-прежнему доступны через надстройки.
Этот процесс следует основному принципу Ember - стабильности без застоя и резко контрастирует с планами обновления аналогичных проектов, таких как AngularJS . [53]
Будущее развитие
Статус проекта можно отслеживать с помощью протокола собрания основной группы. [54] Однако основные изменения в Ember происходят через процесс запроса комментариев. [55] Это дает сообществу Ember возможность высказать свое мнение о новых предложениях. Известные RFC включают:
- Двигатели. [56] Механизмы позволяют объединять несколько логических приложений в одно приложение с точки зрения пользователя. В настоящее время выпущено как экспериментальное дополнение. [57]
- Улучшения цикла выпуска. [58] Среди прочего он предлагает изменения в Ember CLI для поддержки «стройных сборок», в которых будут удалены устаревшие и неиспользуемые функции.
- Выходная фокусировка. [59] Делаем Ember доступным по умолчанию. Этот RFC направлен на улучшение пользовательского опыта для людей, использующих программы чтения с экрана.
История
В декабре 2011 года платформа SproutCore 2.0 была переименована в Ember.js, чтобы избежать путаницы между платформой приложения и библиотекой виджетов SproutCore 1.0. [60] [61] Фреймворк был создан Иегудой Кац, членом основных команд jQuery, Ruby on Rails и SproutCore. Как и во многих других проектах Каца, в нем конвенция важнее конфигурации .
Корпоративное спонсорство
В отличие от других проектов, таких как AngularJS ( Google ) и React ( Facebook ), которые поддерживаются одной основной компанией, у Emberjs есть множество спонсоров. К ним относятся Yahoo! , [62] LinkedIn и Bustle, которые являются основными пользователями платформы. [63]
Рекомендации
- ^ "Выпуск 3.27.5" . 10 июня 2021 . Проверено 21 июня 2021 года .
- ^ «Релизы · emberjs / ember.js» . GitHub . Проверено 25 февраля 2021 года .
- ^ "ember.js / ЛИЦЕНЗИЯ" . GitHub . Проверено 27 апреля 2017 года .
- ^ Агасипур, Александр; Чако, Шаджит (30 ноября 2012 г.). «Корпоративные приложения переходят на одностраничный дизайн» . TechCrunch .
- ^ «Дискурс, созданный с помощью Ember.js» . GitHub . Дата обращения 15 июля 2015 .
- ^ «Строительство с Ember.js в Groupon» . TalentBuddy . Дата обращения 15 октября 2015 .
- ^ http://libscore.com/?#Ember
- ^ «Ember-напиши один раз, беги везде» . GitHub . 5 июл 2015.
- ^ «Создавайте лучшие настольные приложения с Ember» . SpeakerDeck . 5 июл 2015.
- ^ «Доклад Wicked Good Ember 2015 - Создавайте лучшие настольные приложения с Ember, видео» . 5 июл 2015.
- ^ «Построен из углей - Apple Music» . BuiltWithEmber . Дата обращения 21 июля 2016 .
- ^ «Ember.js: Legal» . emberjs.com . Проверено 14 февраля 2019 .
- ^ «Ember CLI» . Дата обращения 15 декабря 2018 .
- ^ "Ember Addons" . Дата обращения 15 декабря 2018 .
- ^ Asay, Мэтт. «Инновации быстро и медленно: EmberJS настаивает:« Нам не нужно ломать Интернет » » . Читайте, пишите . Дата обращения 18 июн 2015 .
- ^ «Обещания JavaScript» . Mozilla . Дата обращения 18 июн 2015 .
- ^ «Веб-компоненты» . Веб-компоненты . Дата обращения 18 июн 2015 .
- ^ «TC39: Члены» . TC39Wiki . Дата обращения 18 июн 2015 .
- ^ «Что мы узнали из Ember.js после 2 месяцев разработки нашего нового продукта» . Твердый . Дата обращения 3 ноября 2015 .
- ^ «Основные причины, по которым отраслевые эксперты используют Ember.js, и как вы можете принять его самостоятельно» . TalentBuddy . Проверено 14 октября 2015 года .
- ^ Фрэнк Трейси. «5 основных концепций Ember 2.0, которые вы должны понять» . EmberIgniter . Архивировано из оригинального 27 июля 2016 года . Проверено 31 августа 2015 года .
- ^ «Ember.js - Модели: Введение» . Emberjs . Проверено 21 января 2014 .
- ^ Джексон, Роберт. «HTMLBars» . GitHub . Проверено 18 февраля 2015 года .
- ^ «Как добавить полимер в ваш проект Ember» . ProgramWithErik . Дата обращения 11 августа 2015 .
- ^ «Учебник по сервисам Ember» . ProgramWithErik . Проверено 27 июля 2015 года .
- ^ Банго, Рей (14 марта 2013 г.). «Знакомство с Ember.js» . Nettuts +.
- ^ «Ember CLI» . Дата обращения 15 декабря 2018 .
- ^ «Испытание угля» . Дата обращения 15 декабря 2018 .
- ^ «Ember CLI-управление зависимостями» . Дата обращения 15 декабря 2018 .
- ^ "Ember CLI asset compilation" . Дата обращения 15 декабря 2018 .
- ^ "Ember CLI Blueprints" . Дата обращения 15 декабря 2018 .
- ^ "Написание аддонов Ember CLI" . Дата обращения 15 декабря 2018 .
- ^ "Каталог аддонов Ember" . emberobserver.com . Дата обращения 15 декабря 2018 .
- ^ «Обзор интерфейса командной строки Ember» . Дата обращения 15 декабря 2018 .
- ^ "Ember Data README" . Дата обращения 4 декабря 2013 .
- ^ «Ember без данных Ember» . Злая форель . Дата обращения 2 января 2014 .
- ^ «Спецификация JSON API» . Дата обращения 16 июн 2015 .
- ^ "Модели Ember.js" . Emberjs . Дата обращения 26 июн 2015 .
- ^ "Ember Observer-Data" . EmberObserver . Дата обращения 16 июн 2015 .
- ^ «Реализации JSON API» . JSON API . Дата обращения 26 июн 2015 .
- ^ «Интеграция Ember.js со Spring Framework» . SpringEmber . Дата обращения 26 июн 2015 .
- ^ «Релиз Ember Data 1.13» . Дата обращения 18 июн 2015 .
- ^ «Дополнения Firefox - Ember Inspector» . Mozilla . Дата обращения 5 августа 2015 .
- ^ «Интернет-магазин Chrome - Ember Inspector» . Интернет-магазин Chrome . Проверено 18 фев 2014 .
- ^ «Инспектор углей» . Ember.js . Проверено 28 июн 2015 .
- ^ «Внутри Fastboot. Подделка DOM в узле» . Emberjs . Дата обращения 19 июня 2015 .
- ^ «Liquid Fire: анимации и переходы для приложений Ember» . GitHub . Дата обращения 19 июня 2015 .
- ^ «Анимации в Ember.js с жидким огнем» . airpair.com . Проверено 10 июля 2015 года .
- ^ «Процесс релиза New Ember» . Дата обращения 19 июня 2015 .
- ^ «Проект Ember на 2.0» . Дата обращения 19 июня 2015 .
- ^ «Замораживание Ember API» . Дата обращения 19 июня 2015 .
- ^ «Аддон Эмбер Уотсон» . Дата обращения 19 июня 2015 .
- ^ «Анонс Angular 2.0» . Дата обращения 19 июня 2015 .
- ^ «Протокол собрания основной команды Ember» . Emberjs . Дата обращения 5 июля 2015 .
- ^ «Процесс Ember RFC» . Emberjs . Дата обращения 18 июн 2015 .
- ^ «Двигатели» . Emberjs . Проверено 3 фев 2015 .
- ^ «Тлеющие двигатели» . EmberAddons.com . Дата обращения 19 января 2016 .
- ^ «Уточнение RFC процесса выпуска» . Emberjs . Дата обращения 18 июн 2015 .[ постоянная мертвая ссылка ]
- ^ «RFC с фокусом на выход» . Emberjs . Архивировано из оригинального 24 сентября 2016 года . Дата обращения 18 июн 2015 .
- ^ «SproutCore 2.0 становится Ember.js» . Н . 13 декабря 2011 г.
- ^ «Amber.js (ранее SproutCore 2.0) теперь Ember.js» . yehudakatz.com. 12 декабря 2011 г.
- ^ «Интервью с Майком Норт, главным инженером-программистом, Yahoo» . Emberweekend . Проверено 10 авг 2015 .
- ^ «Спонсоры Ember» . Emberjs . Дата обращения 18 июн 2015 .
дальнейшее чтение
- Builes, Адольфо (2015). «Эмбер-кли 101» . Leanpub . Регулярно обновляется.
- Эрди, Балинт (2015). «Рок-н-ролл с Ember.js» . balinterdi.com . Регулярно обновляется.
- Белый, Мэтью (2015). Создавайте Audacious Web Apps с Ember 2 . ООО "Прагматичные программисты". ISBN 978-1-68050-078-3.
Внешние ссылки
- Официальный веб-сайт