2016-03-15 54 views
2

有没有做这个的任何性能影响:在函数内调用require时是否会影响性能?

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

// then use it like this 

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

难道仅仅是一种不好的做法或有任何性能差异?

+0

这是一个很好的和有效的问题。无视谁低估了你并投票结束。这不是主题。这里的人们总体上脾气暴躁而迂腐。 – Chev

回答

5

号当你需要的东西它存储的是结果上require.cache需要的键是你的程序的完整路径。随后对require的调用将简单地返回缓存模块。

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

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

require.resolve返回这是关键的是在高速缓存哪些模块的完整路径。从缓存中清除模块后,下一次拨打require的电话将再次从光盘中拉出模块。

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

相关问题