gpt4 book ai didi

javascript - 我们可以从 requirejs 中的模块导出多个非 AMD 函数吗?

转载 作者:数据小太阳 更新时间:2023-10-29 04:08:12 25 4
gpt4 key购买 nike

如果我有一个名为 old.js 的非 AMD 模块,并且在这个脚本中我定义了两个函数 f1f2。我需要使用它们,如何导出两者?

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 ) 我认为这是因为即使那些 jquery 示例也是单独的文件并且它们具有“入口”函数/类。

最佳答案

一般来说,如果你想从一个模块中导出多个对象,你...仍然需要导出一个对象。标准形式是将您的函数附加到导出对象并返回:

function f1() { ... }
function f2() { ... }

return {
f1: f1,
f2: f2
};

如果这是非 AMD 代码,您可能没有 return 语句,但您仍然需要添加导出对象。

它看起来像 recommended option对于旧代码,只需在 exports 属性中指定 f1,然后在 init 函数中进行进一步修改。大概 require 实际上是使用 exports 属性来检查文件是否已加载,因此是否包含所有项目都没有关系。假设 f1f2 都是全局变量,你可能会这样做:

shim: {
"old": {
deps: ["jquery"],
exports: "f1",
init: function() {
return {
f1: f1,
f2: f2
};
}
}
}

这应该允许您要求 old 并获取导出对象,而不是 f1:

require(['old'], function(old) {
old.f1();
old.f2();
});

关于javascript - 我们可以从 requirejs 中的模块导出多个非 AMD 函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18650066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com