Ember 应用的多个路由器

Multiple routers for an Ember app

一个 Ember 应用可以有多个 router.js 吗?

默认一个router.js会有

import Ember from 'ember';
import config from '../../config/environment';

var Router = Ember.Router.extend({
  location: config.locationType
});

export default Router.map(function() {
  this.resource('sampleroute');

});

其他router.js将有

import Ember from 'ember';
import config from '../../config/environment';

var Router = Ember.Router.extend({
  location: config.locationType
});

export default Router.map(function() {
  this.resource('sampleroute2');

});

我只需要创建 Ember 应用程序来读取我的第二个路由器 (router2.js),它默认读取默认值 router.js 来设置路由。

您可以在一个函数内的单独文件中定义您的路由,然后像这样导出该函数

page1.js

export default function() {
  this.route('page1');
}

page2.js

export default function() {
  this.route('page2');
}

然后将其导入您的 router.js 文件。

import page1Routes from 'page1';
import page2Routes from 'page2';

var Router = Ember.Router.extend({
  location: config.locationType
});

Router.map(function() {
  page1Routes.call(this);
  page2Routes.call(this);       
});

export default Router;

您可以重复调用Router.map来添加新路由。所以你可以用同样的方式导入你的其他路线。

您可以按照 blessenm 所示将函数分开 。 但在那种情况下,您将继续保持对这些文件的依赖性。 router.js 将继续成为几乎所有开发人员使用的资源。

除了那个答案: 对于每个模块,您可以生成一个导出该函数的 "modul-route.js" 文件。然后通过使用实例初始化器,您可以收集所有这些函数和 运行 Router.map(...); 所有加载文件的函数。