在构建相对较大的应用程序时,我应该如何定义路由器?更具体地说,如果使用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(){
...
});
我应该将app
传递给app_router
来设置App.Router.map...
方法,还是应该返回Ember.Router.map(...)
?如果确定选择了第一个变体,则依赖关系会发生变化。
换句话说,我应该创建一个“空”Ember.Application
并将其传递给路由器,以便它可以定义App.Route.map(...
方法,因为它引用了this
,如{ {1}},或者我应该调用this.route\this.resource...
然后调用它上面的Ember.Router.create()
函数,然后从模块返回它并将其设置为map
。
答案 0 :(得分:1)
我应该将应用程序传递给app_router来设置App.Router.map ...方法,还是应该返回Ember.Router.map(...)?如果确定选择了第一个变体,则依赖关系会发生变化。
我会选择第二种变体。
换句话说,我应该创建一个“空”Ember.Application并将其传递给路由器,以便它可以定义App.Route.map(...方法,因为它引用了这个,就像this.route \ this.resource ...,或者我应该调用Ember.Router.create()然后调用它上面的map函数,然后从模块返回它并将其设置为App.Router = router。
都不是。你应该让ember自己创建路由器。您的所有代码应该是调用App.Router的map
fx。我不是ask.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 showing the basic concept,当然没有require.js.