我想制作一个
的Javascript文件export
的内容(例如,一个类),如果它可以export
(例如,它已加载<script type="module">
)window
和global
。例如,我们假设这样一个文件print.js
。
可以使用它:
<script type="module">
import print_things from "./print.js";
print_things("Javascript innovation");
</script>
<案例B
,或者
<script src="./print.js"></script>
<script>
window.print("Hmmmmmmm.");
</script>
目前,使用export
会使脚本在案例B :Uncaught SyntaxError: Unexpected token export
中抛出错误。因此,必须知道export
是否在其运行的环境中可用,以便支持这两种用例。我该怎么做?
答案 0 :(得分:1)
查看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 () {};
}));
答案 1 :(得分:1)
理解1.2345E-46
的浏览器应忽略具有type=module
属性的脚本。这意味着您可以为支持模块的浏览器提供模块树,同时为其他浏览器提供支持。
nomodule