如果我使用内联要求,如下所示:
function something(...paths) {
return require('path').join(...paths);
}
something('etc', 'etc');
每次调用时引擎都需要吗?例子:
let i = 10;
while (--i)
something(i, 'etc');
谢谢。
系统会调用require()
每次通过你的循环,但模块加载require()
被缓存,并且模块加载代码仅在第一次加载模块时运行。因此,虽然有一点额外的开销调用require('path')
,只是在缓存中查找该模块名称并返回缓存的模块句柄。不需要每次调用时都加载、解析和运行模块require()
.
也就是说,最好养成以下习惯:
const pathModule = require('path');
function something(...paths) {
return pathModule.join(...paths);
}
您这样做的方式的另一个缺点是,第一次path
模块加载后,系统将使用同步文件 I/O 来加载它,这在多用户服务器中不是一个好主意。文件 I/O 只是第一次发生,但仍然不是一个很好的实践。最好在服务器初始化时取消同步 I/O。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)