我有几个全局变量(jQuery +插件,构造函数等)的构建库(连接,缩小并包含在require.js之前)。该库用作构建应用程序的基础,具有假定的依赖关系。即,如果我在库之后包含我的应用程序脚本,那么我可以自由地使用jQuery和构造函数而没有任何问题。
对于更大的应用程序,我正在考虑使用requirejs(管理应用程序中的不同模块),同时仍然使用这个构建的库。我如何将现有的全局变量如jQuery添加到require?
中的依赖列表中<script src="pathto/lib.js" type="text/javascript"></script>
<script src="require.js" data-main="../js/app" type="text/javascript"></script>
requirejs.config({
shim: {
'jquery': {
exports: '$'
}
},
// jQuery is already loaded with lib.js, no need for any path...
path : {
jquery : 'jquery.js'
}
});
这可能吗?或者我应该继续假设某些全局变量将存在于app模块中,因为lib.js包含在require / app js之前?
使用require来加载lib.js是不可能的,因为它是CMS的一部分。
- 编辑 -
使用命名模块怎么样,只返回全局对象的句柄,因为这是lib内容所在的位置?
define("lib", function () {
return this;
});
require(["lib"], function (lib) {
// use existing globals found in lib via
lib.jQuery
// or simply
jQuery
});
这允许我遵循命名依赖关系的require()约定,而不是假设。
答案 0 :(得分:0)
我正在为我从CDN加载jquery的项目做同样的事情,所以我的路径配置看起来像这样
path: {
'jquery': '//path/to/the/cdn'
}
在您的情况下,我认为您应该在更新(定义然后返回)时执行,因为在某些第三方库中,他们可能将jquery
定义为依赖项。如果您的RequireJS配置中没有jquery
,则必须修改第三方库的源代码