假设我有一个文件(file1.js),代码如下:
var output = {
thing: "A thing",
another: "Another thing"
}
现在如果我在另一个文件中引用它,像这样:
<script src='file1.js'></script>
<script>
console.log(output);//Logs the object to the console.
</script>
将导入output
变量,以供使用。但是,如果我要使用导出,就像下面的代码片段一样,它将不起作用,而只允许导入:
//file1.js
var output = {
thing: "A thing",
another: "Another thing"
}
export default output;
<script type="module">
import something from "file1.js";
console.log(something.thing);//"A thing";
console.log(output);//Error, but if I had omitted the exports and imports it would work fine.
</script>
是否有办法使和同时工作?这样我就可以用import something from "file1.js"
同时还能使用输出变量?请注意,我在库中使用它,因此我不能依赖用户在客户端执行某些操作。
这是可能的,但我不建议在大多数情况下这样做:首先将导出的对象分配给窗口:
const output = {
thing: "A thing",
another: "Another thing"
};
window.output = output;
export default output;
然后你可以同时使用window.output
和导入的对象。
但是使用模块的主要好处之一是约束作用域和避免不必要的全局污染,这可以通过显式污染全局对象来解决。
如果只在一个位置完成这一点是有意义的-比如将整个库命名空间分配给窗口上的单个属性-但我希望不要经常依赖全局属性。