假设我有一个像这样的 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 || {}))
它做了一些事情:
如果
global.mymodule
为真,那么它等同于global.mymodule = global.mymodule // A noop. factory(global.mymodule)
否则等同于:
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/