Javascript RequireJS+;角度:未定义的应用程序。回调不';t射击
我通过以下简单代码获得main.js:Javascript RequireJS+;角度:未定义的应用程序。回调不';t射击,javascript,angularjs,module,requirejs,amd,Javascript,Angularjs,Module,Requirejs,Amd,我通过以下简单代码获得main.js: 'use strickt'; require.config({ paths: { 'angular' : 'libs/angular' , 'angular-router' : 'libs/angular-route' , }, shim : { 'angular' : { exports : 'angular' }, 'angular-router'
'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()不起作用。有人能告诉我它有什么问题吗?只需删除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;
});
您可以自己显式地命名模块,但它使模块
可移植性较差--如果将文件移动到另一个目录,则
需要更改名称。通常最好避免在名称中编码
对于模块,只需让优化工具在模块中运行即可
名字。优化工具需要添加名称,以便
一个模块可以捆绑在一个文件中,以便更快地加载
浏览器
你不应该改为在main.js中使用(['angular','app'],function(mainApp){…})吗?为什么?Angular包含为全局抛出垫片,并在app.js中作为参数传递。所以它不应该在requirecallback中未定义。也许我真的不明白你的问题。如果是这样,请纠正我。