在 JavaScript ES6 中开发一个Web项目,我目前使用Traceur将我的模块从ES6编译到ES5,认为将来,当浏览器支持ES6时,我会能够跳过这个转化步骤。
最后,因为我不想在启动时下载几个js片段,所以我有一个文件,其中包含所有转换为ES5的模块,感谢Traceur。
但是为了验证这个选择,我想知道在我保留ES6源代码的那一天是否仍然可能。如果我只是连接它们,将会有无效的导入和名称冲突。
看起来它并没有为它设计,需要额外的处理步骤才能正确合并它们。
我们如何处理使用多个模块定义的ES6单个文件项目?
答案 0 :(得分:3)
这将通过捆绑来解决,如第3章中所述:http://www.2ality.com/2013/11/es6-modules-browsers.html。 所以这是可能的并验证您的方法,虽然我找不到Web上相应编译步骤的实现,但是当人们开始使用ES6模块时会出现这种情况。
答案 1 :(得分:1)
在不久的将来,由于HTTP/2
,将不再需要构建单个文件项目。
请参阅:Why bundle optimizations are no longer a concern in HTTP/2
答案 2 :(得分:0)
最好的解决方案可能是使用browserify将已编译的代码捆绑到一个文件中。然后我会使用uglify或Google的Closure Compiler来缩小文件,因为在给定所有必须处理的导入/导出的情况下,存在轻微的大小开销。
另外,如果你愿意使用Babel而不是Traceur,那么浏览器化的Babel插件可以让事情变得非常简单。