在我的项目中,我想使用RequireJS并按如下方式引导我的应用程序:
requirejs.config({
baseUrl: 'scripts/vendor',
paths: {
jquery: [
'https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min',
'jquery'
],
angular: [
'http://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.min',
'angular'
],
app: '../app'
}
});
require(['require', 'jquery', 'angular', 'app'], function(require, $, angular, app) {
console.log(require);
console.log($);
console.log(angular);
console.log(app);
});
在我的index.html上,只有RequireJS通过脚本标记加载,其中RequireJS加载上述代码。 什么有效: - 在我的网络监视器中,我可以看到RequireJS,jQuery,Angular和app已加载 - 对于require,jQuery和app
,console.log消息打印正确角度对象以某种方式未定义。但是,如果我不从CDN加载它并使用我的本地加载,它的工作原理!本地文件是RequireJS包装器,如下所示:
define(['/components/angular/angular.min.js'], function () {
return angular;
});
如何使用Angular'S CDN进行此项工作?或者这取决于Angular的支持?
答案 0 :(得分:2)
首先,你将“路径”与“垫片”混为一谈
路径好,不要去“垫片”行为。但是,你需要让你的“路径”正确:
paths: {
jquery: 'https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min',
// NOTE: angular is "plain JS" file
angular: 'http://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.min',
app: '../app'
}
然后,你需要放弃让某些东西归还给你的需要......只需“使用力量,卢克”:)并期望在需要时使用正确的全局变量:
require(['jquery', 'app', 'angular'], function($, app, thisValueDoesNotMatter) {
// you don't need to wrap "require" Just use global
console.log(require);
console.log($);
console.log(app);
// note, angular is loaded as "plain JavaScript" - not an AMD module.
// it's ok. It returns "undefined" but we just don't care about its return value
// just use global version of angular, which will be loaded by this time.
// because you mentioned it in your dependencies list.
console.log(window.angular);
});