【问题标题】:Does it make sense to "compile" node project with grunt or gulp?用 grunt 或 gulp “编译”节点项目有意义吗?
【发布时间】:2015-10-27 07:47:47
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: node.js optimization gruntjs gulp


    【解决方案1】:

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

    但是:

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

    这样更好:

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

    结论:不要这样做,因为这更像是过早的优化,这通常是个坏主意。您将遇到严重的节点可调试性问题,这将是开发时的问题。

    请遵循一般的 Node.js 性能指南,如果您不针对生产环境以外的其他平台,请选择具有您需要的所有 ES6 功能的最新 Node.js 版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 2011-05-29
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      相关资源
      最近更新 更多