Node.js 使用babel工作流在ES6中编写传统节点模块有哪些利弊?

Node.js 使用babel工作流在ES6中编写传统节点模块有哪些利弊?,node.js,npm,ecmascript-6,babeljs,Node.js,Npm,Ecmascript 6,Babeljs,在为浏览器开发前端代码时,我经常在向下传输到分发包时使用,这使我能够使用附带的变压器的所有便利。对于传统模块,我通常坚持使用我为特定模块支持指定的所需节点引擎 我也想开始使用巴别塔变压器开发这些“传统”模块,但我可以预见其缺点,包括: 它可能会禁止调试工作流(更具体地说是在使用IDE时) 模块的性能可能会受到影响 在这个问题上的当前状态是什么?鉴于上述和其他权衡,您认为在传统模块中使用babel有意义吗?您首选的工作流程有哪些优点/缺点 额外问题:有哪些著名的模块和/或模块作者已经在使用这种

在为浏览器开发前端代码时,我经常在向下传输到分发包时使用,这使我能够使用附带的变压器的所有便利。对于传统模块,我通常坚持使用我为特定模块支持指定的所需节点引擎

我也想开始使用巴别塔变压器开发这些“传统”模块,但我可以预见其缺点,包括:

  • 它可能会禁止调试工作流(更具体地说是在使用IDE时)
  • 模块的性能可能会受到影响
在这个问题上的当前状态是什么?鉴于上述和其他权衡,您认为在传统模块中使用babel有意义吗?您首选的工作流程有哪些优点/缺点


额外问题:有哪些著名的模块和/或模块作者已经在使用这种技术?我见过Facebook为他们的react生态系统这么做,但我想这是有道理的,因为这些都是浏览器的模块。

它被转换回vanilla JS(巴贝尔负责这一部分)。 你得到的是,你可以利用我发现有用的类

希望随着时间的推移,浏览器将支持ES6,我们将不需要巴贝尔

唯一的缺点是调试时,必须生成源映射,但这是临时的,请参见上文


回答你的第二个问题:我在其中一个网站上使用React,我需要的大多数模块(来自npm)都使用ES6。

我相信你提到的权衡或缺点都不适用于使用babel作为ES7 transpiler开发nodejs代码。就我个人而言,我发现在node上使用ES7功能非常有效

有用于调试的源映射支持。我使用karma进行测试,它具有出色的源代码映射支持(我使用IntelliJ,但我相信大多数IDE都可以)。您可以在github上签出此存储库。这是构建nodejs数据后端的一个不错的堆栈。它使用karma进行测试,甚至还提供了代码覆盖率支持。它还与pm2集成以实现可扩展性和可用性


关于性能:我认为transpiled代码在很多情况下都比没有高级语言功能的开发人员编写的代码运行得更快。稍后我将发布一些链接。

这在很大程度上取决于您打算使用的功能。主要是语法上的糖分,如对象扩展等,以及使用async/await进行更可读的流控制。这些不会真正影响性能,尽管(特别是对于async/await)转换可能会非常密集,因此,您必须尝试自己的调试工具是否能够满足这一要求。