node.js - 使用内联要求

标签 node.js require

如果我使用内联要求,像这样:

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 不受影响。

关于node.js - 使用内联要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46045675/

相关文章:

node.js - 如何在 Node.js require() 中使用另一个模块中的一个模块功能

javascript - 为需要的 Node 模块创建工厂

javascript - 有没有办法在 <script> 标签中运行 Node.js?

ruby-on-rails - 为什么 Rails 尝试在生产环境中自动加载此文件?

node.js - Sails.js 时间作为模型的属性

javascript - 如何在 CasperJS 中打开新标签页

javascript - 使用 Meteor 和 Iron Router 渲染 PDF

javascript - 如何优雅地将 bool 值和整数建模为一个?

php - 如何在 PHP 函数中正确使用 MySQL 查询?

javascript - 在nodejs中将现有对象查找到数组中