我是一个javascript新手,我遇到了这段代码。
(function (root, factory) {
if(typeof define === "function" && define.amd) {
define([], function(){ return factory(root.MyObject);});
} else if(typeof module === "object" && module.exports) {
module.exports = factory(root.MyObject);
} else {
root.MyObject= factory(root.MyObject);
}
}(typeof window !== "undefined" ? window : this, function (MyObject) { ... }
当我调试这段代码时,我看不到里面的内容 定义和模块. 这些是什么,它们持有什么数据(尤其是define.amd)?你能不能给我解释一下,为什么这种方法对注入MyObject是好的(或坏的或必要的)?是否有任何新的或更好的方法在javascript中做到这一点?
先谢谢你
这是旧的导入文件的通用方法.随着现代浏览器和nodejs 14,现在,你可以使用es6模块与es6 sintax。对于nodejs来说,它们应该有 "mjs "扩展名。
import * as myModule from "./path/to/file.mjs"
否则,如果你必须导入旧的JavaScript,那么你可以使用你发布的UMD脚本。你可以找到一些模块的文档 此处 特别是在UMD 此处.
UMD是一种将你的模块与其他模块集成的方法,使用一些众所周知的(但也是相当古老的)需要方法。
无论如何,你也可以使用一个npm库,如 Babeljs 以便将你的代码从es6移植到旧的JavaScript中(可能需要一些配置),他们的输出就是应该被导入的。