在多个文件中使用相同的`require`会增加运行时间

时间:2018-04-24 01:57:22

标签: javascript node.js

因此,我计划将我的功能分成单独的文件,然后将它们导入单个index.js,然后成为主要的导出器。因此,我想知道在我的几个文件中是否有var bcrypt = require('bcrypt')这样的内容比在一个文件中使用它更慢。

以下是我计划如何在index.js中进行分组和导出

const fs = require('fs');
const path = require('path')
const modules = {}

const files = fs.readdirSync(__dirname)
files.forEach(file => {
    if (file === 'index.js') return
    let temp = require(path.join(__dirname, file))

    for (let key in temp) {
        modules[key] = temp[key]
    }
});
module.exports = modules

作为我的意思的一个例子:

file1.js

var bcrypt = require("bcrypt");

module.exports.file1test = "hi"

file2.js

var bcrypt = require("bcrypt");

module.exports.file2test = "bye"

1 个答案:

答案 0 :(得分:5)

不,它没有。每当模块第一次require d时,模块的代码就会运行,为其导出分配一些东西,然后返回这些导出。该模块的进一步require只是再次引用这些导出。逻辑类似于:

const importModule = (() => {
  const exports = {};
  return (name) => {
    if (!exports[name]) exports[name] = runModule(name);
    return exports[name];
  };
})();

因此,同一模块的多个import并不比多次引用对象贵。