node.js - 使用 grunt 或 gulp 对 "compile" Node 项目有意义吗?

标签 node.js optimization gruntjs gulp

我花了很多时间用 grunt 文件构建一个 web 模板(前端)来“编译”整个项目并在生产中拥有高效的代码。

现在我正在开发一个后端项目(使用 Node/express),我想知道“编译” Node 项目是否有意义?

我在 Babel 中使用 ES6 语法,所以我想象每次启动项目(node index.js 或 nodemon index.js)Babel 都会在 ES5 中转译它,然后运行它。

我不在乎它是否在项目开始时完成,一旦启动就没有影响。但我不确定。

Node 是否读取整个程序并将其“保存”到内存中?如果是这样,我想像我们习惯的前端那样连接/编译 javascript 文件是没有用的。

最佳答案

是的,至少这不是一个坏主意。

但是:

  • nodemon 不适用于生产
  • 当您将 babel 作为运行时运行时,您会将其作为可能出现故障的附加层引入到代码之上。
  • 对于较旧的 node 平台,仅从转译的 js 中读取可能会更容易,或者当您将其作为模块使用时,效率会更高。

更好:

  • 使用 NODE_ENV=product
  • 是的,它确实将其保存到 RAM 中。解析速度会更快,但速度有限。
  • 事实上,当你缩小代码时,你的 js 的编译时间会更好。但副作用(例如,可调试性较差)是一种权衡。
  • OH:V8 可以针对不超过特定 char 计数的函数进行性能优化。但效果可能非常低,因为只有真正的热门功能才能从中受益。
  • 如果您需要发布代码,编译和丑化将有助于混淆。 npm Shrinkwrap 也是一个很好的工具。

Concluding: Don't do it, since it rather feels like premature optimization, which is generally a bad idea. You will meet heavy problems of node debugability, which will be a problem at dev-time.

Rather follow general Node.js performance guide, and if you don't target other platforms than your production environment, choose the newest Node.js version with all the ES6 features you need.

关于node.js - 使用 grunt 或 gulp 对 "compile" Node 项目有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33362387/

相关文章:

node.js - 将 POST 请求与 websocket 响应混合 - 这是一个不好的做法吗?

jquery - Nodejs & 套接字 io : warn - error raised: Error: listen EADDRINUSE

opengl - 如何在游戏循环中计算直到最后一刻

javascript - grunt 任务完成后如何打印文本?

javascript - 如何修复此错误 : Grunt build not found, 使用 --force 继续

angularjs - Grunt 在干净的自耕农 Angular 生成设置上非常慢

Javascript条件逻辑nodejs

node.js - 无法加载在 'flowtype' : Cannot find module 'package.json » eslint-config-react-app' 中声明的插件 'eslint/use-at-your-own-risk' 中的 npm 错误

如果我们今天或昨天获取数据,Mysql 查询将显示结果

Python-将列表成对转换为字典