Javascript定义和模块

问题描述 投票:0回答:1

我是一个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中做到这一点?

先谢谢你

javascript browser
1个回答
0
投票

这是旧的导入文件的通用方法.随着现代浏览器和nodejs 14,现在,你可以使用es6模块与es6 sintax。对于nodejs来说,它们应该有 "mjs "扩展名。

import * as myModule from "./path/to/file.mjs"

可以找到一些文档 此处此处.

否则,如果你必须导入旧的JavaScript,那么你可以使用你发布的UMD脚本。你可以找到一些模块的文档 此处 特别是在UMD 此处.

UMD是一种将你的模块与其他模块集成的方法,使用一些众所周知的(但也是相当古老的)需要方法。

无论如何,你也可以使用一个npm库,如 Babeljs 以便将你的代码从es6移植到旧的JavaScript中(可能需要一些配置),他们的输出就是应该被导入的。

© www.soinside.com 2019 - 2024. All rights reserved.