因此,我计划将我的功能分成单独的文件,然后将它们导入单个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"
答案 0 :(得分:5)
不,它没有。每当模块第一次require
d时,模块的代码就会运行,为其导出分配一些东西,然后返回这些导出。该模块的进一步require
只是再次引用这些导出。逻辑类似于:
const importModule = (() => {
const exports = {};
return (name) => {
if (!exports[name]) exports[name] = runModule(name);
return exports[name];
};
})();
因此,同一模块的多个import
并不比多次引用对象贵。