Node.js-重复的require('path'/'module')语句

时间:2019-03-01 21:26:18

标签: javascript node.js npm

我的问题是,拥有多个相同的require('path'/'module')语句是否会对性能产生负面影响。

// Multiple require('path') statements
const express = require("express");
const app = express();

app
  .route("/example")
  .get(require("./api/api.js").example.get)
  .put(require("./api/api.js").example.put)
  .post(require("./api/api.js").example.post)
  .delete(require("./api/api.js").example.delete);

与..

相比
// Single require('path') statement
const express = require("express");
const app = express();

const api = require("./api/api.js");
app
  .route("/example")
  .get(api.example.get)
  .put(api.example.put)
  .post(api.example.post)
  .delete(api.example.delete);

1 个答案:

答案 0 :(得分:4)

它可能会影响性能,但影响很小。同一模块的多个require(或import)不会再次运行该模块的代码-它所做的只是访问内存中已经存在的模块的导出。出于性能考虑,绝对不必担心 。这类似于一次又一次地访问对象的相同属性。

为了便于阅读,第二个代码更加清晰,尽管您可以通过首先提取example属性来进一步减少重复性(并以微不足道的数量提高性能):

const { example } = require("./api/api.js");
app
  .route("/example")
  .get(example.get)
  .put(example.put)
  .post(example.post)
  .delete(example.delete);