我用这个简单的代码获得了main.js:
'use strickt';
require.config({
paths: {
'angular' : 'libs/angular' ,
'angular-router' : 'libs/angular-route' ,
},
shim : {
'angular' : {
exports : 'angular'
},
'angular-router' : {
deps: ['angular']
}
}
});
require(['app'], function (mainApp) {
console.log(mainApp);
});
如您所见,我尝试在需要回调中获取应用程序。但我得到的都是未定义的。 这是我在app.js文件中得到的内容:
define('mainApp', ['angular', 'angular-route'], function (angular) {
var app = angular.module('mainApp', ['ngRoute']);
console.log('should be fired from app.js');
return app;
});
所以问题是: 函数参数'mainApp'作为main.js回调中的未定义似乎是合乎逻辑的,因为app.js中的console.log()不会拍摄。有人可以告诉我它有什么问题吗?
答案 0 :(得分:1)
只需删除app.js文件中的模块名称(或将其更改为“app”)。你app.js文件看起来像:
define(['angular', 'angular-route'], function (angular) {
var app = angular.module('mainApp', ['ngRoute']);
console.log('should be fired from app.js');
return app;
});
http://requirejs.org/docs/api.html#modulename
您可以自己明确命名模块,但它会生成模块 不太便携 - 如果您将文件移动到另一个目录,您将 需要更改名称。通常最好避免使用名称进行编码 对于模块,只需让优化工具在模块中刻录 名。优化工具需要添加名称以便更多 一个模块可以捆绑在一个文件中,以便更快地加载 浏览器。