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