我在文件models/Model.js
中有一个模型,如下所示:
const mongoose = require('mongoose')
const modelSchema = mongoose.Schema({ name: String })
const Model = mongoose.model('Model', modelSchema)
module.exports = Model
然后当我使用它时,我像任何其他模块一样导入它:
const Model = require('../models/Model')
我的问题是:如果我require
每次执行一个模块代码(在这种情况下每次导入时它都会“运行”Model.js
),那么它会更有效(或者至少更有意义)这样导入它?:
const mongoose = require('mongoose')
const Model = mongoose.model('Model')
答案 0 :(得分:2)
您的问题包含错误的假设:
如果每次我需要一个模块,代码就会被执行(在这种情况下就是它 会"跑"我每次导入时都会使用Model.js ... ...
Model.js中的代码仅在第一次调用require
以加载该模块时运行。然后将生成的模块对象放在require.cache
中,对该模块的后续require
调用只是从缓存中返回相同的模块对象。
因此,两种方法之间没有明显的性能差异,这取决于您的个人偏好。