1

在构建一个比较大的应用程序时,我应该如何定义我的路由器?更具体地说,如果使用 requirejs 我有以下代码:

main.js

define('application',['routes/app_router'], function(router){
        return Ember.Appcliation.create(
              LOG_TRANSITIONS:true,
              ...
});

requirejs('application',function(application){
      var App = window.App = application;
       ...
}

routes/我有app_router.js

define('app_router',['ember'],function(){
  ...
});

那么我应该将 an 传递app给 myapp_router来设置App.Router.map...方法还是应该返回 a Ember.Router.map(...)?如果选择了第一个变体,那么可以肯定的是,依赖关系会发生变化。

换句话说,我应该创建一个“空”Ember.Application并将其传递给路由器以便它可以定义App.Route.map(...方法,因为它具有对this, like的引用this.route\this.resource...,还是应该调用Ember.Router.create()然后调用map它的函数,然后从模块返回 this 并将其设置为App.Router = router

4

1 回答 1

1

那么我应该将应用程序传递给我的 app_router 以设置 App.Router.map... 方法还是应该返回 Ember.Router.map(...)?如果选择了第一个变体,那么可以肯定的是,依赖关系会发生变化。

我会选择第二个变体。

换句话说,我是否应该创建一个“空” Ember.Application 并将其传递给路由器,以便它可以定义 App.Route.map(... 方法,因为它引用了 this,比如 this.route\this。资源...,或者我应该调用 Ember.Router.create() 然后在其上调用 map 函数,然后从模块中返回它并将其设置为 App.Router = router.

两者都不。您应该让 ember 自己创建路由器。你所有的代码应该做的就是调用 App.Router 的mapfx。我不是 require.js 专家,但这样的事情应该可以工作:

//Define a fx that specifies your applications routes
define('routes',['ember'], function(){
  return function() {
    this.route("about");
  }
});

// Pass that custom routes fx to App.Router.map before routing begins
define('application',['routes'], function(routes){
  return Ember.Application.create({
  LOG_TRANSITIONS: true,
  ready: function() {
    this.Router.map(routes);
  }
});

这是一个显示基本概念的 jsfiddle,当然没有 require.js。

于 2013-06-18T16:42:32.423 回答