gpt4 book ai didi

javascript - 如何在 Javascript 中检查脚本是否作为 ES6 模块运行(以便它可以 `export` )?

转载 作者:行者123 更新时间:2023-11-29 20:57:44 25 4
gpt4 key购买 nike

我想制作一个 Javascript 文件

  • export如果可以的话,是它的内容(例如一个类)export (例如它已经加载了 <script type="module"> )
  • 否则,将其内容分配给全局变量,例如window。和 global .

例如,我们假设这样一个文件print.js .

案例A

可以这样使用:

<script type="module">
import print_things from "./print.js";
print_things("Javascript innovation");
</script>

案例B

或者,

<script src="./print.js"></script>
<script>
print_things("Hmmmmmmm.");
</script>

目前,使用export使脚本在情况 B 中抛出错误:Uncaught SyntaxError: Unexpected token export .所以它必须知道是否 export在其运行的环境中可用,以支持这两种用例。我该怎么做?

最佳答案

查看 UMD (通用模块定义)。即 this example

(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['exports', 'b'], function (exports, b) {
factory((root.commonJsStrictGlobal = exports), b);
});
} else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
// CommonJS
factory(exports, require('b'));
} else {
// Browser globals
factory((root.commonJsStrictGlobal = {}), root.b);
}
}(typeof self !== 'undefined' ? self : this, function (exports, b) {
// Use b in some fashion.

// attach properties to the exports object to define
// the exported module properties.
exports.action = function () {};
}));

关于javascript - 如何在 Javascript 中检查脚本是否作为 ES6 模块运行(以便它可以 `export` )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48396968/

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