hawm
(Hawm)
06.Февраль.2022 09:50:10
1
Похоже, что Discourse уже обновлён до Ember Octane, но пока не поддерживает некоторые новые функции.
Я понимаю, что миграция существующих компонентов в Discourse может потребовать огромных усилий, но нам бы очень хотелось использовать эти новые возможности в нашем новом плагине. Возможно ли это сделать до завершения полной миграции?
На данный момент мой компонент, который расширяет @glimmer/component, вызывает ошибку Assertion Failed:
Glimmer Components - Octane Upgrade Guide - Ember Guides
Преимущества компонентов Glimmer
Компоненты Glimmer обладают рядом существенных преимуществ:
Эти новые компоненты предоставляют все преимущества, описанные выше для нативных классов.
Они вообще не наследуются от EmberObject, что означает, что им не требуются API EmberObject, такие как reopenClass или extend. Вы можете безопасно использовать constructor для всего кода инициализации.
Хуки жизненного цикла значительно упрощены и стали проще в использовании.
У них нет обёрточного HTML-элемента, который мешал стилизации и разметке с помощью CSS.
Аргументы в компонентах Glimmer также находятся в пространстве имён this.args и представляют собой неизменяемый объект. Это означает, что:
Понятно, когда вы обращаетесь к аргументам, переданным компоненту, а когда — к полям и свойствам самого компонента.
Аргументы всегда ссылаются на исходное переданное значение, поэтому вам не нужно искать запутанный код в хуках или определениях вычисляемых свойств, который изменяет значение аргумента.
Нет запутанного двустороннего связывания данных для аргументов через класс компонента; данные могут течь только в одном направлении.
Falco
(Falco)
06.Февраль.2022 13:38:22
2
В данный момент мы работаем над этим, и в ближайшие несколько месяцев Discourse начнет использовать компоненты glimmer.