关于 javascript:如何在 Ember CLI 中使用 ES6 语法对 Ember 类进行子类化

How to subclass an Ember class using ES6 syntax in Ember CLI

我想在 Ember CLI 中创建一个自定义路由类。我有以下示例在使用全局变量编写的旧应用程序中工作:

1
2
3
4
5
6
7
App.AuthenticatedRoute = Ember.Route.Extend({
  beforeModel: function() {
    //Do some things
  }
});

App.DashboardRoute = App.AuthenticatedRoute.Extend({});

我对 ES6 模块足够熟悉,知道这个例子看起来像这样......

1
2
3
4
5
6
7
var AuthenticatedRoute = Ember.Route.Extend({
  beforeModel: function() {
    //
  }
});

export default AuthenticatedRoute;

...但我对以下内容很好奇:

  • 这将存在于应用程序结构中的什么位置?
  • 如何在其他模块中访问这个子类?
  • 更新:

    为了澄清我的问题:我一直在寻找有关这样的自定义实现应该位于何处的信息,而不是位于 app/routes 目录中的常规子路由。 Ember CLI 文档指出以下内容:

    To provide a custom implementation for generated routes (equivalent to App.Route when using globals), use app/routes/basic.js.

    http://www.ember-cli.com/#module-directory-naming-structure

    ...但我在实践中找不到任何这样的例子,这似乎是一个不完整的约定。我最终将自定义实现视为标准路由(app/routes/authenticated.js)并根据需要导入。


    如果你使用强烈推荐的 ember-cli,它会存在于 app/routes/authenticated.js 中,看起来像这样:

    1
    2
    3
    4
    import Ember from 'ember';

    export default Ember.Route.extend({
    });

    然后你可以将它作为

    导入到其他模块中

    import authRoute from 'app/routes/authenticated'