Javascript 如何在HTML脚本标记中管理ECMAScript 6 Harmony模块?

Javascript 如何在HTML脚本标记中管理ECMAScript 6 Harmony模块?,javascript,ecmascript-6,ecmascript-harmony,Javascript,Ecmascript 6,Ecmascript Harmony,我意识到这还没有实现,因此是假设性的 当ES6 Harmony模块最终在现代浏览器中实现时,语法和实现将如何处理内联JavaScript?通过比较,我可以想象出概念上的区别,即每个文件都被视为一个模块,从而产生了这样一种想法:HTML文档将为每个单独的模块提供一个标记 然而,这在浏览器中似乎很奇怪,因为这意味着如果您有50个模块,那么现在就有50个客户端/服务器连接。如果在标记中连接文件或可能内联多个模块,则会出现另一个问题 最终,这将合并全局/名称间距问题: <script>

我意识到这还没有实现,因此是假设性的

当ES6 Harmony模块最终在现代浏览器中实现时,语法和实现将如何处理内联JavaScript?通过比较,我可以想象出概念上的区别,即每个文件都被视为一个模块,从而产生了这样一种想法:HTML文档将为每个单独的模块提供一个
标记

然而,这在浏览器中似乎很奇怪,因为这意味着如果您有50个模块,那么现在就有50个客户端/服务器连接。如果在
标记中连接文件或可能内联多个模块,则会出现另一个问题

最终,这将合并全局/名称间距问题:

<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>

var Foo={};
var Baz=1;//本地还是全球?
导出默认Foo;
输入‘Foo’中的Foo;
var Bar={};
var Baz=2;//本地还是全球?
导出默认栏;
在CommonJS->trans-Picked或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>

(功能(){
var Foo={};
var Baz=1;//现在肯定是本地的!
导出默认Foo;
})();
(功能(){
输入‘Foo’中的Foo;
var Bar={};
var Baz=2;//现在肯定是本地的!
导出默认栏;
})();
ES6 Harmony模块的未来实现将如何处理浏览器的级联源的平面依赖模型?

模块没有
模块SomeName{/*模块内容这里*/}
语法问题

编辑:模块块语法已从规范中删除。委员会的结论似乎是。最终的解决方案是拥有一个支持HTTP 2的服务器和客户端,这样客户端可以多路传输其请求,服务器可以向客户端推送额外的资源(谢谢!)

至于在浏览器中处理模块语义,引入了在页面上创建单个模块的方法。(由于模块可以异步解析,它们与内联
script
元素的语义不匹配,因此需要一个新标记)

另见:

  • 优秀文章
  • 实际定义来自

谢谢。我没有意识到
模块
关键字。欢呼这已经不可能了,模块声明早就从模块提案中删除了。(而且,你链接到的ES6草案还不是最终的。)@Andreas-笑着说,你肯定比我知道得多!是什么取代了模块声明的功能(或该功能是否已被列为表格)?如果表格化,这是否意味着每个模块都需要有自己的源文件?再进一步挖掘,我找到了答案——我更新了我的答案,以了解新的现实。如果我错过了什么,请告诉我/我在这里仍然完全偏离了基准!Afair,这将在HTML5开发者中讨论。