用grunt或gulp“编译”节点项目有意义吗?
我花了很多时间用grunt文件构build一个webtemplate(前端)来“编译”整个项目,并在生产中有一个高效的代码。
现在我正在开发一个后端项目(使用node / express),我想知道“编译”节点项目是否合理?
我用Babel使用ES6语法,所以我想象每次启动项目(节点index.js或nodemon index.js)Babel在ES5中传输它,然后运行它。
我不在乎在项目开始的时候是否已经完成,一旦启动就没有影响。 但我不确定。
节点是否读取整个程序并将其“保存”到内存中? 如果是这样,我想像它是没有用的连接/编译JavaScript文件,就像我们习惯于与前端。
是的,至less这不是一个坏主意。
然而:
-
nodemon
不适用于生产 - 当你将
babel
作为运行时运行时,将其作为可能失败的附加层引入到代码之上。 - 只有从已编译好的js中读取对于旧的
node
平台来说可能会更容易一些,或者当您将它作为模块提供时,可以更高效。
所以更好:
- 用NODE_ENV =生产
- 是的,它确实将其保存到RAM中。 parsing将会更快,但只是勉强。
- 当你缩小你的代码的时候,你的js会有更好的编译时间。 但副作用(例如更糟糕的可debugging性)是折衷的。
- OH:对于不超过特定
char
数的函数,可以对V8进行性能优化。 但效果可能真的很低,因为只有真正的热门function从中受益。 - 编译和uglifying将是好混淆,如果你需要运送你的代码。
npm shrinkwrap
也是一个很好的工具。
结论:不要这样做,因为它感觉像是不成熟的优化,这通常是一个坏主意。 您将遇到节点可debugging性的严重问题,这在开发时会成为问题。
而是遵循一般的Node.js性能指南,如果您不是针对除您的生产环境以外的其他平台,请select具有所需的所有ES6function的最新Node.js版本。