J W*_*ezy 1 ember.js ember-simple-auth
这个问题与:Does Ember Octane Route class support using mixins有关?在 Ember Octane 中,Mixin 已被正式弃用。
题:
用什么替代 Ember mixins 的最佳选择是什么,我该如何实现?
语境:
我有自定义 mixin,可以扩展 ember-simple-auth (~v1.8.2) 提供的功能,这在创建方法时不可用(见下文)。我目前正在使用 ember-simple-auth 3.0.0 https://github.com/simplabs/ember-simple-auth。在 github 上的文档中,他们似乎在 Ember Octane 上使用了自己的 mixin,如您所见:
// my-engine/addon/routes/index.js
import Route from '@ember/routing/route';
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
export default class IndexRoute extends Route.extend(AuthenticatedRouteMixin) {
triggerAuthentication() {
this.transitionToExternal('login');
}
}
Run Code Online (Sandbox Code Playgroud)
看来我不是唯一一个遇到这个问题的人,因为 Simple Auth 也不知道他们想要走什么路线:https : //github.com/simplabs/ember-simple-auth/issues/2185
选项:
我有以下身份验证混合:
首先,我想非常清楚地说明,在 Ember 中,mixin 并未“正式弃用”,据我所知,甚至没有关于它的活跃 RFC。正如升级指南所解释的那样,由于没有扩展 EmberObject,Glimmer 组件不支持 mixin,但是预先存在的框架类(Route、Controller 等)必须要这样做,否则将是一个重大变化。
没有替换 mixin 的最佳选择,因为它取决于 API 的使用。如果您要问如何替换 ember-simple-auth mixins,我的回答是,您不能在插件本身提供替代 API 之前这样做。Mixins 和您发布的示例代码将在可预见的未来继续工作。
您可以在此 PR 中看到使用类继承来共享功能的示例。