这样做会对性能产生什么影响:
// utils.js
module.exports = function() {/* do something */};
// then use it like this
function someTask(param) {
/* do something with param */
return require('./utils')(param);
}
这只是一种不好的做法还是有任何性能差异?
答案 0 :(得分:5)
没有。当您需要某些内容时,它会在require.cache
上存储该需求的结果,其中键是模块的完整路径。对require的后续调用将只返回缓存的模块。
如果由于某种原因需要从缓存中删除模块,可以这样做:
delete require.cache[require.resolve('./utils')];
require.resolve
返回模块的完整路径,该路径是密钥在缓存上的内容。从缓存中清除模块后,下一次调用require
将再次从光盘中拉出模块。
通常,为了便于阅读,在文件顶部执行您的需求可能是一种很好的做法,但除了从缓存中返回模块所涉及的一小部分逻辑之外,我认为没有理由将其视为性能问题。