我写一个小的应用程序( initApp.js
, initApp.routinj.js
, initApp.controller.js
)哪些模块需要使用,需要被加载。
这里是我的代码(*)。
使用console.log
在我看到模块是如何加载顺序如下每个模块:
1) initController
2) initRouting
3) initApp
这是正确的顺序?
现在,另一个问题。
在initApp.controller.js
我需要访问的功能等initHeader
和initSidebar
(定义initApp.js
)。
但你可以从我的代码(见initApp.controller.js
), console.log('initController', app);
回报undefined
。
为了解决这个问题,我定义的函数getApp
在initApp.controller.js
。
但是可以肯定有一个更好的方式来完成这项任务。
任何想法?
谢谢
(*)
** ** main.js
define([
'js/app',
'js/init/initApp',
// 'js/tasks/tasksApp'
],
function (App)
{
"use strict";
App.initialize();
});
** ** initApp.js
/*global define*/
define([
'backbone',
'js/app',
'js/init/initApp.routing',
'js/init/views/sidebarView',
'js/init/views/headerView',
],
function (Backbone, App, Router, SidebarView, HeaderView)
{
"use strict";
console.log('initApp', Router)
var initApp = new Backbone.Marionette.Application({
initHeader: function ()
{
var headerView = new HeaderView();
App.header.show(headerView);
},
initSidebar: function ()
{
var sidebarView = new SidebarView();
App.sidebar.show(sidebarView);
}
});
return initApp;
});
** initApp.routin,JS **
/*global define*/
define([
'backbone',
'marionette',
'js/init/initApp.controller'
],
function(Backbone, Marionette, controller)
{
"use strict";
console.log('initRouting', controller)
var Router = Backbone.Marionette.AppRouter.extend({
appRoutes: {
'*defaults': 'index'
}
});
return new Router({
controller: controller
});
});
** ** initApp.controller.js
/*global define*/
define([
'js/init/initApp'
],
function(app)
{
"use strict";
console.log('initController', app); // undefined
var getApp = function () {
var initApp;
require(['js/init/initApp'], function (app) {
initApp = app;
});
return initApp;
};
var controller = {
index: function ()
{
var app = getApp();
app.initHeader();
app.initSidebar();
}
}
return controller;
});