(使用requireJS,angularJS,angularAMD)
在我的main.js文件中,我有:
require.config({
baseUrl: "js",
paths: {
'angular': 'libs/angularjs/angular.min',
'angularAMD': 'libs/angularjs/angularAMD.min'
},
shim: {
'angularAMD': ['angular']
}
});
define(['angularAMD'], function (angularAMD) {
var app = angular.module("app", []);
app.controller("testCtrl", function ($scope) {
$scope.message = "udało się!";
});
angularAMD.bootstrap(app);
return app;
});
一切正常。
但是当我将配置部分切换到其他文件时,我遇到了错误:
main.js:
require(['common'], function (common) {
define(['angularAMD'], function (angularAMD) {
var app = angular.module("app", []);
app.controller("testCtrl", function ($scope) {
$scope.message = "udało się!";
});
angularAMD.bootstrap(app);
return app;
});
});
common.js
require.config({
baseUrl: "js",
paths: {
'angular': 'libs/angularjs/angular.min',
'angularAMD': 'libs/angularjs/angularAMD.min'
},
shim: {
'angularAMD': ['angular']
}
});
我可以在require函数中使用define吗?如果不是如何首先包含通用配置然后使用define?
答案 0 :(得分:2)
我假设您的main.js
文件是您为加载RequireJS的data-main
标记上的<script>
属性提供的文件,或者它是您的应用程序的主要入口点。将main.js
更改为:
require(['common'], function (common) {
require(['app']);
});
在代码可以轻松加载的位置创建一个app.js
模块:
define(['angularAMD'], function (angularAMD) {
var app = angular.module("app", []);
app.controller("testCtrl", function ($scope) {
$scope.message = "udało się!";
});
angularAMD.bootstrap(app);
return app;
});
任何需要访问您在此模块中创建的app
值的内容都只需要app
模块。
问题中的代码定义了一个模块,但它是异步的。当调用define
时,RequireJS已经完成加载main
。就其而言,main
已完成。那么它应该给定义的模块命名?