使用Node.js需要与ES6导入/导出

在我正在合作的一个项目中,我们有两种选择我们可以使用的模块系统:

  • 导入使用模块require ,并利用出口module.exportsexports.foo
  • 使用ES6 import导入模块,并使用ES6 export
  • 使用其中一个有什么性能好处? 如果我们使用Node6上的ES6模块,还有什么我们应该知道的吗?


    使用其中一个有什么性能好处?

    请记住,目前还没有支持ES6模块的JavaScript引擎。 你自己说过你在使用Babel。 无论如何, module.exports默认将importexport声明转换为CommonJS( require / module.exports )。 所以,即使你使用ES6模块语法,如果你在Node中运行代码,你也会在后台使用CommonJS。

    CommonJS和ES6模块之间存在技术差异,例如CommonJS允许您动态加载模块。 ES6不允许这样做,但是有一个API正在开发中。

    由于ES6模块是标准的一部分,我会使用它们。


    您可能需要考虑几种用法/功能:

    要求:

  • 您可以进行动态加载,其中加载的模块名称不是预定义的/静态的,或者只有在“真正需要”(取决于特定代码流)时有条件地加载模块的位置。
  • 加载是同步的。 这意味着如果您有多个require ,它们将被逐个加载和处理。
  • ES6进口:

  • 您可以使用命名导入来选择性地只加载您需要的部分。 这可以节省内存。
  • 导入可以是异步的(并且在当前的ES6模块加载器中,它实际上是),并且可以执行得更好一些。
  • 另外,Require模块系统不是基于标准的。 现在ES6模块的存在几乎不可能成为标准。 未来将会有各种实现方式的ES6模块的本地支持,这在性能方面将是有利的。


    主要优点是句法:

  • 更多的声明性/紧凑语法
  • ES6模块基本上将使UMD(通用模块定义)过时 - 从根本上消除了CommonJS与AMD(服务器与浏览器)之间的分裂。
  • 您不太可能看到ES6模块带来的任何性能优势。 即使在浏览器中完全支持ES6功能,您仍然需要额外的库来捆绑模块。

    链接地址: http://www.djcxy.com/p/52195.html

    上一篇: Using Node.js require vs. ES6 import/export

    下一篇: ES6 class variable alternatives