我正在尝试使用underscore.js
加载require.js
,如下所示:
require(["libs/underscore-1.2.3.js"], function(_) {
...
});
但这不起作用,因为underscore.js
导出模块名称:define('underscore', function() { ... })
。
如果不重命名lib/underscore-1.2.3.js
,如何使用require.js
答案 0 :(得分:2)
好吧,经过一些谷歌搜索,我发现:https://github.com/documentcloud/underscore/pull/338#issuecomment-3245213
哪里
@dvdotsenko所有AMD加载器都允许将模块ID映射到部分路径,通常配置称为“路径”,所以要做你想做的事情:
requirejs.config({ paths: underscore: 'js/libs/underscore-1.2.3.min' } }); require(['underscore'], function () {});由于下划线被其他更高级别的模块(如主干)使用,因此需要使用公共依赖项名称来传达对下划线的公共依赖关系,并且将该依赖项称为“下划线”是有意义的。路径配置提供了一种方法,可以映射到要用于该依赖关系的特定URL。
这不是回答我的问题(即,我仍然不知道如果我所拥有的是一个URL,我将如何加载下划线),但至少它是一个功能性的解决方法
答案 1 :(得分:2)
虽然这并不是我最理想的解决方案,但您可以要求外部文件,然后在内部块中要求注册模块名称。
require(
['require','http://documentcloud.github.com/underscore/underscore-min.js'],
function(require){
require(['underscore'],function(_){
var a = _.intersection([1,2,3],[2,3,4]);
document.write("Underscore is available in the closure : " + a);
})
}
)
它可能看起来不太漂亮,但这可能是一种推荐的模式,用于加载初始资产,以便在相关模块中直观地要求它们。