我决定将web app
分成不同的Apps
(app1,app2)。
为什么来自js/app1.js
我得到undefined
?
我应该如何使用requirejs从app1访问mainApp?
这是我的代码:
JS / main.js
require([
'js/app',
'js/app1/app1',
'js/app2/app2'
],
function (App)
{
"use strict";
App.initialize();
});
JS / mainApp.js
define([''],
function(app)
{
var mainApp = new Backbone.Marionette.Application();
mainApp.start();
mainApp.initialize = function() {
Backbone.history.start();
}
return mainApp;
});
JS / APP1 / app1.js
define(['js/mainApp],
function(app)
{
console.log(app); // undefined
});
答案 0 :(得分:1)
使用require.js时,如果其中一个所需文件中存在错误,有时它不会显示为错误,但返回值将变为未定义。在您的情况下,app
中的js/app1/app1.js
未定义,很可能是由于js/mainApp.js
中的错误。
仅从您提供的代码中,js/mainApp.js
有一个带有空字符串的define
语句,但希望将App
传递给它的函数。尝试删除空字符串,然后将空列表([]
)传递给define
,而不是将App
传递给那里的函数。
如果您的实际代码没有这些语法问题,但仍然有undefined
,请更新您问题中的代码段。
试试这个:
<强> JS / mainApp.js 强>
define(['jquery', 'underscore', 'backbone', 'backbone.marionette'],
function($, _, Backbone)
{
var mainApp = new Backbone.Marionette.Application();
// Make sure main app is not undefined here.
console.log('mainApp:', mainApp);
mainApp.start();
mainApp.initialize = function() {
Backbone.history.start();
};
return mainApp;
});
不要忘记为JS库提供正确的路径。