【发布时间】:2014-10-06 18:33:33
【问题描述】:
我意识到这还没有实现,所以是假设性的。
当 ES6 Harmony 模块最终在现代浏览器中实现时,语法和实现将如何处理内联 JavaScript?通过比较,我可以想象每个文件都被视为一个模块的概念区别,这意味着HTML文档将为每个单独的模块都有一个<script src="...">标签。
但是,这在浏览器中似乎很奇怪,因为这意味着如果您有 50 个模块,那么您现在有 50 个客户端/服务器连接。如果您将文件连接起来或可能在<script>...</script> 标记中内联多个模块,则会引入另一个问题。
这最终会将全局/名称间距问题混为一谈:
<script>
var Foo = {};
var Baz = 1; // Local or Global?
export default Foo;
import Foo in 'foo';
var Bar = {};
var Baz = 2; // Local or Global?
export default Bar;
</script>
在 CommonJS -> trans-piled 或 AMD 中,所有内容都包裹在一个闭包中。让我相信,当 ES6 出现时,我们仍然需要包装我们的代码:
<script>
(function() {
var Foo = {};
var Baz = 1; // Definitely Local now!
export default Foo;
})();
(function() {
import Foo in 'foo';
var Bar = {};
var Baz = 2; // Definitely Local now!
export default Bar;
})();
</script>
ES6 Harmony 模块的未来实现将如何处理浏览器的级联源的平面依赖模型?
【问题讨论】:
-
好吧,这将在 HTML5 开发人员之间讨论。
标签: javascript ecmascript-6 ecmascript-harmony