【发布时间】:2014-12-14 16:39:38
【问题描述】:
请有人确认我对 ES 模块的理解?
在javascripts/bar.js:
var foo = 2;
export function Bar() {}
在index.html
<script>
import { Bar } from 'javascripts/bar';
var b = new Bar(); // Instantiates an instance of Bar.
</script>
在引擎盖下,ES6 引擎将在评估 import { Bar } from 'javascripts/bar'; 时加载 bar.js,并在通过 HTTP 返回该模块时阻塞?还是在评估index.html 中的脚本之前下载了bar.js?
因为bar.js 是使用import 关键字加载的,所以bar.js 中的全局变量被限定为该模块并且在全局范围内不可见?
现在,如果我想连接模块,我将继续需要将我的模块包装在 IIFE 中,以便它们的范围保持不同(或者至少使用在后台执行此操作的构建步骤)?
【问题讨论】:
-
好问题。看起来是对的。我很想确认,但我不确定,尤其是最后两句话。 +1 是因为很高兴得到一个解释一些极端情况的答案。
标签: javascript module ecmascript-6