如果我有一个名为的非 AMD 模块old.js
在这个脚本中我有两个函数f1
and 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()
});
这是行不通的。我会得到split
错误。该文档没有提到多个(http://requirejs.org/docs/api.html#config-shim http://requirejs.org/docs/api.html#config-shim)我认为这是因为即使那些 jquery 示例也是单独的文件,并且它们具有“入口”函数/类。
一般来说,如果您想从模块中导出多个对象,您...仍然需要导出单个对象。标准形式是将函数附加到导出对象并返回:
function f1() { ... }
function f2() { ... }
return {
f1: f1,
f2: f2
};
如果这是非 AMD 代码,您可能没有return
语句,但您仍然需要添加导出对象。
它看起来像推荐选项 http://requirejs.org/docs/api.html#config-shim对于旧代码,仅指定f1
in the exports
财产,但然后进一步咀嚼init
功能。大概 require 实际上是使用exports
属性来检查文件是否已加载,因此是否包含所有项目并不重要。假设f1
and f2
都是全局变量,你可以这样做:
shim: {
"old": {
deps: ["jquery"],
exports: "f1",
init: function() {
return {
f1: f1,
f2: f2
};
}
}
}
这应该允许你要求old
并获取导出对象,而不是f1
:
require(['old'], function(old) {
old.f1();
old.f2();
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)