2
我正在構建一個包含Backbone,Marionette和RequireJS的應用程序,如果應用程序啓動可以以任何方式進行改進/改進,我希望由一些更有經驗的人員運行。Backbone,Marionette,RequireJS應用程序啓動
文件夾結構:
index.html
js/
collections/
libs/
backbone.js
marionette.js
require.js
...
models/
views/
app.js
init.js
router.js
目前應用程序的引導如下。
index.html
的requireJS入口點定義爲:
<script data-main="js/init" src="js/libs/require.js"></script>
init.js
確實的RequireJS配置和:
require(['app'], function(App){
App.start();
});
該應用模塊中app.js
:
App = new Backbone.Marionette.Application();
App.addInitializer(function (options) {
// initialize the Router; will only setup the routes and corresponding callbacks; not history.start()
App.router = new Router();
// initialize Marionette regions
App.addRegions({
'header': '#header',
'main': '#main',
'footer': '#footer'
});
});
App.on('start', function(options) {
Backbone.history && Backbone.history.start() || console.error('No "Backbone.history" to .start()');
});
return App;
路由器模塊在router.js
:
return Backbone.Router.extend({
routes: {
'panel/:handle': 'showPanel',
},
showPanel: function (handle) {
require(['app'], function (App) {
App.main.show(new Panel_v({userHandle: handle}));
});
}
});
有沒有辦法讓路由器模塊更少卷積?我以這種方式解決了App-> Router-> App形成的循環依賴問題。
其他建議?
不錯!這解開了路由器上的意大利麪條。有一件事。在App.addInitializer()中放置App.addRegions()是否更有意義? – 2013-03-26 04:51:50
我想這取決於你的口味,也許它在語義上更正確,但最終你獲得的效果是一樣的。 – Ingro 2013-03-26 09:43:11