Cpp*_*ner 8 javascript requirejs
如果我有一个非AMD模块命名old.js并在此脚本中我有两个功能f1并已f2定义.我需要使用它们,我如何导出它们?
require.config({
paths: {
"jquery": "https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min",
},
shim: {
"old": {
deps: ["jquery"],
exports: ["f1", "f2"]
}
},
urlArgs: "bust=" + (new Date()).getTime()
});
Run Code Online (Sandbox Code Playgroud)
这不行.我会得到split错误.doc没有提到多个(http://requirejs.org/docs/api.html#config-shim)我认为这是因为即使那些jquery示例都是单独的文件,它们也有"入口"函数/类.
nra*_*itz 12
通常,如果要从模块中导出多个对象,则...仍需要导出单个对象.标准表单是将您的函数附加到导出对象并返回:
function f1() { ... }
function f2() { ... }
return {
f1: f1,
f2: f2
};
Run Code Online (Sandbox Code Playgroud)
如果这是非AMD代码,您可能没有该return语句,但仍需要添加导出对象.
看起来旧代码的推荐选项是仅f1在exports属性中指定,但随后在init函数中进行进一步的修改.据推测,require实际上是使用该exports属性来检查文件是否已加载,因此是否包含所有项目无关紧要.假设f1并且f2都是全局变量,你可以这样做:
shim: {
"old": {
deps: ["jquery"],
exports: "f1",
init: function() {
return {
f1: f1,
f2: f2
};
}
}
}
Run Code Online (Sandbox Code Playgroud)
这应该允许您需要old并获取导出对象,而不是f1:
require(['old'], function(old) {
old.f1();
old.f2();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4525 次 |
| 最近记录: |