【发布时间】:2016-07-08 10:50:19
【问题描述】:
babel-node docs 发出严厉警告:
不适合生产使用
您不应该在生产中使用
babel-node。它不必要地繁重,由于缓存存储在内存中,内存使用率很高。由于需要动态编译整个应用程序,因此您也总是会遇到启动性能损失。
让我们分解一下:
内存使用 - 嗯?无论如何,所有模块都在应用程序的生命周期内“缓存”在内存中。他们来这里做什么?
启动损失 – 这是一个性能问题吗?部署 Web 应用程序已经需要几秒钟(如果您在 CI 中进行测试,则需要几分钟)。为启动增加半秒没有任何意义。事实上,如果启动时间在任何地方都很重要,那么它在开发中比在生产中更重要。如果您重新启动网络服务器的频率足够高,以至于启动时间成为问题,那么您就会遇到更大的问题。
此外,没有关于在生产中使用 Babel 的 require hook (require('babel-register')) 的警告,尽管这可能与 babel-node 的作用几乎完全相同。例如,您可以执行node -r babel-register server.js 并获得与babel-node server.js 相同的行为。 (我的公司在数百个微服务中完全做到了这一点,没有任何问题。)
Babel 的警告只是 FUD,还是我遗漏了什么?如果警告是有效的,为什么它不适用于 Babel 的 require 钩子?
相关:Is it okay to use babel-node in production ——但这个问题只是询问如果推荐生产使用,答案只是引用官方建议,即“否”。相比之下,我质疑官方建议背后的推理。
【问题讨论】:
-
虽然 require 钩子本身没有警告,但 require 钩子的文档中有一个警告(在 babeljs.io/docs/setup 的“选择您的工具”表中选择“Require hook”)。跨度>
标签: babeljs