gpt4 book ai didi

ember.js - Ember Octane 如何转换自定义 mixin

转载 作者:行者123 更新时间:2023-12-02 19:25:36 24 4
gpt4 key购买 nike

此问题涉及:Does Ember Octane Route class support using mixins? Mixin 在 Ember Octane 中已被正式弃用。

问题:

替换 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');
}
}

看来我不是唯一一个遇到此问题的人,因为简单例份验证也不知道他们想要走哪条路线:https://github.com/simplabs/ember-simple-auth/issues/2185

选项:

  • 纯原生类,通过类继承共享功能。
  • 可以在多个类中导入和使用的实用函数。
  • 可以注入(inject)到多个类中、共享的服务它们之间的功能和状态。

我有以下身份验证混合:

  1. 应用程序路由:它处理用户是否已登录以及用户是否启用了双因素身份验证 (2FA),如果启用,它会验证用户是否已通过身份验证2FA。这是因为简单例份验证在开发 mixin 时并未提供 2FA
  2. 经过身份验证的路由:确保用户已登录。如果未登录,则用户将被路由到登录页面。一旦他们登录,他们就会被路由回他们最初尝试访问的页面
  3. 未经身份验证的路由:阻止登录用户访问登录用户不应访问的某些路由

最佳答案

首先,我想澄清的是,Ember 中的 mixin 并未“正式弃用”,据我所知,甚至没有 active RFC 。关于它。作为Upgrade Guides解释一下,由于不扩展 EmberObject,Glimmer 组件不支持 mixins,但预先存在的框架类(Route、Controller 等)必须支持,否则这将是一个重大更改。

没有替代 mixin 的最佳选择,因为它取决于 API 的使用情况。如果您问如何替换 ember-simple-auth mixins,我的答案是您不能,直到插件本身提供替代 API。 Mixins 和您发布的示例代码将在可预见的 future 继续工作。
您可以看到 using class inheritance to share functionality in this PR 的示例.

关于ember.js - Ember Octane 如何转换自定义 mixin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61314433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com