在函数内部调用require时是否会对性能产生影响?

时间:2016-03-15 16:47:13

标签: node.js

这样做会对性能产生什么影响:

// utils.js
module.exports = function() {/* do something */};

// then use it like this

function someTask(param) {
   /* do something with param */
   return require('./utils')(param);
}

这只是一种不好的做法还是有任何性能差异?

1 个答案:

答案 0 :(得分:5)

没有。当您需要某些内容时,它会在require.cache上存储该需求的结果,其中键是模块的完整路径。对require的后续调用将只返回缓存的模块。

如果由于某种原因需要从缓存中删除模块,可以这样做:

delete require.cache[require.resolve('./utils')];

require.resolve返回模块的完整路径,该路径是密钥在缓存上的内容。从缓存中清除模块后,下一次调用require将再次从光盘中拉出模块。

通常,为了便于阅读,在文件顶部执行您的需求可能是一种很好的做法,但除了从缓存中返回模块所涉及的一小部分逻辑之外,我认为没有理由将其视为性能问题。