Ember.js Octane — это новая версия фреймворка, которая была выпущена с целью улучшить разработку и улучшить опыт работы с Ember. Это обновление охватывает широкий спектр изменений, улучшений и новых практик, которые делают фреймворк более современным и удобным для разработчиков. Одним из самых значимых аспектов Octane является переход к использованию новых стандартов JavaScript и улучшенная поддержка современных возможностей веб-разработки.
В Octane были внедрены следующие ключевые изменения и концепции, которые существенно влияют на работу с фреймворком:
Геттеры и сеттеры с использованием
@tracked
В Octane, управление состоянием компонента или объекта стало проще
благодаря внедрению @tracked — новой концепции для
отслеживания изменений свойств. В предыдущих версиях Ember
использовались get и set для доступа и
изменения свойств объекта. В Octane используется система, которая
позволяет автоматически отслеживать изменения значений и обновлять DOM
при их изменении, что упрощает работу с состоянием компонентов.
import { tracked } from '@glimmer/tracking';
class MyComponent extends Component {
@tracked count = 0;
increment() {
this.count += 1;
}
}
В примере выше, свойство count отслеживается
автоматически, и его изменение приведет к перерасчёту состояния
компонента, что сокращает количество boilerplate-кода.
Глиммер и шаблоны
В Octane значительные улучшения касаются шаблонов. Глиммер, новый рендер-движок Ember, был интегрирован в фреймворк, что улучшило производительность и упрощение синтаксиса. Шаблоны в Octane теперь используют новый формат, более похожий на стандартные HTML-шаблоны с более чистым синтаксисом. Также был улучшен механизм рендеринга, что способствует уменьшению количества пересчетов при изменении состояния и ускоряет работу приложений.
Пример использования нового синтаксиса шаблонов:
<button {{on "click" this.increment}}>Increment</button>
<p>Count: {{this.count}}</p>
В этой конструкции можно увидеть использование хелпера
on, который заменяет необходимость вручную добавлять
обработчики событий, а также использование новых стилей для связывания
данных и событий.
Компоненты и классы
В Octane был введён новый способ создания компонентов через классы.
Это позволило полностью избавиться от устаревшего синтаксиса для
создания компонентов с помощью Ember.Object.extend. Классы стали
основной единицей компонента, и их использование в комбинации с новыми
синтаксисами и свойствами, такими как @tracked, делает код
более чистым и современным.
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
export default class MyComponent extends Component {
@tracked value = 0;
increment() {
this.value++;
}
}
В этом примере, MyComponent создается как класс с
использованием синтаксиса ES6 классов. Это улучшает читаемость и
совместимость с современным JavaScript.
Автоматическое управление зависимостями
Одним из значительных улучшений является новая система для работы с
зависимостями между компонентами и другими сущностями в Ember. Благодаря
использованию декораторов, таких как @tracked и новому
рендер-движку, система теперь автоматически отслеживает зависимости, что
позволяет более эффективно обновлять только те части приложения, которые
действительно изменились.
Модульная архитектура и новые API
В Octane была значительно улучшена модульная архитектура фреймворка.
Были добавлены новые API для более гибкой и модульной разработки, такие
как @action, @service, и другие. Эти API
облегчают работу с сервисами, действиями и состоянием приложения,
минимизируя количество кода и повышая производительность.
Новое управление маршрутами и переходами
Octane улучшил работу с маршрутизацией, сделав её более интуитивно понятной и проще в использовании. Например, были улучшены механизмы динамической загрузки маршрутов и компонентов, что позволило создать более эффективные приложения с меньшими затратами на загрузку и рендеринг страниц.
Переход на modern JavaScript (ES6+)
Одним из больших шагов вперед в Octane стал переход на современные
стандарты JavaScript, включая использование class вместо
прототипного наследования, новые синтаксические конструкции, такие как
async/await, а также другие улучшения, которые делают код более
современным и поддерживаемым.
Упрощение работы с состоянием через @state и
улучшенные хуки
Octane предоставляет новые возможности для работы с состоянием приложения, такие как декораторы для отслеживания состояний, улучшенные методы жизненного цикла компонентов, а также более гибкие хуки для работы с компонентами и сервисами.
@tracked и других механизмов отслеживания состояния
улучшает производительность и упрощает взаимодействие с
компонентами.Переход на Octane в большинстве случаев не вызывает проблем, особенно если приложение уже использует последние версии Ember. Тем не менее, существует несколько шагов, которые нужно выполнить для корректного перехода:
@tracked для состояния:
старые методы отслеживания состояния в компонентах должны быть заменены
на новые подходы с использованием декоратора @tracked.Octane edition Ember.js представляет собой значительный шаг вперед в
эволюции фреймворка, предлагая более современную и эффективную модель
разработки. Внедрение таких улучшений, как классы,
@tracked, улучшенные шаблоны и новый рендер-движок, делает
разработку на Ember более удобной и производительной. Переход на Octane
требует некоторых усилий, но он оправдывает себя благодаря значительному
улучшению качества кода, повышению производительности и удобству
работы.