gpt4 book ai didi

javascript - 如何在没有任何额外依赖的情况下在浏览器中使用 UMD

转载 作者:技术小花猫 更新时间:2023-10-29 12:10:44 25 4
gpt4 key购买 nike

假设我有一个像这样的 UMD 模块(保存在 'js/mymodule.js' 中):

(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.mymodule = global.mymodule || {})));
}(this, function (exports) { 'use strict';
function myFunction() {
console.log('hello world');
}
}));

如何在这样的 HTML 文件中使用此模块? (没有 requirejs、commonjs、systemjs 等...)

<!doctype html>
<html>
<head>
<title>Using MyModule</title>
<script src="js/mymodule.js"></script>
</head>
<body>
<script>
/* HOW TO USE myFunction from mymodule.js ??? */
</script>
</body>
</html>

非常感谢您的帮助。

最佳答案

好的,所以你在一个没有 RequireJS、CommonJS、SystemJS 等的环境中运行

关键行是 factory((global.mymodule = global.mymodule || {})) 它做了一些事情:

  1. 如果global.mymodule为真,那么它等同于

    global.mymodule = global.mymodule // A noop.
    factory(global.mymodule)
  2. 否则等同于:

    global.mymodule = {}
    factory(global.mymodule)

工厂内部:您的工厂应该通过分配给exports 来导出您想要从模块中导出的内容。因此,您可以通过执行 exports.myFunction = myFunction 来导出 myFunction

工厂外:在工厂外,导出的值将在mymodule 上,它被导出到全局空间。例如,当你想使用 myFunction 时,你可以执行 mymodule.myFunction(...)

如果不清楚。代码中的工厂是以 function (exports) { 开头的函数,您已在其中正确放置了 myFunction

关于javascript - 如何在没有任何额外依赖的情况下在浏览器中使用 UMD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38638210/

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