我想将一段代码作为 AMD 模块分发。该模块依赖于带有两个 jQuery 插件的 noConflict 模式下的 jQuery。
我希望用户能够通过简单地需要一个模块文件(模块将托管在我们的服务器上)来使用该模块,并为他们处理依赖关系。但是,为了正确加载依赖项,我必须调用require.config()
它,它似乎具有相对于网页的模块路径,而不是调用脚本。我可以使用paths
配置使所有路径成为绝对路径。这将解决依赖性问题,但也会使我们生产服务器之外的任何地方的测试成为一场噩梦。
更具体地说,模块文件大致如下所示:
define (['./jquery-wrapper'], function ($) {
...
return module;
});
同一目录中的jquery-wrapper.js
文件如下所示:
require.config ({
paths: {
'jquery-original': '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min',
// ^ naturally, this one has to be absolute
},
shim: {
'jquery-original': {
exports: '$',
},
'../plugin/js/jquery.nouislider.min': {
// ^ this path is relative to the web page, not to the module
deps: ['jquery-original'],
},
'../plugin/js/jquery.ie.cors': {
// ^ this path is relative to the web page, not to the module
deps: ['jquery-original'],
},
},
});
define (['jquery-original', './jquery.nouislider.min', './jquery.ie.cors'], function ($, slider, cors) {
// ^ these paths are relative to the module
console.log ('types: ' + typeof slider + typeof $.noUiSlider + typeof cors);
return $.noConflict (true);
});
有什么方法可以在任何地方使用相对于模块的路径吗?