假设在我的文件中我只需要 mongoose
包中的 ObjectId
函数。
只导入上述函数而不是在我的文件中导入整个 mongoose
有什么好处(CPU、内存、速度...)吗?
我的想法是:
Node.js 只导入一次模块,因此导入成本不应增加,当使用带 require 的点符号时,它首先需要/导入整个包,因此再次导入成本应该没有差异。
我在导入时使用 cherry pick import 设置的变量更小,因此需要更少的内存,但由于 mongoose 是一个对象,该变量只包含对该对象的引用,因此无论我是 cherry pick 还是不是。这不像我将整个 Mongoose 包设置到我的变量中。我只是做个引用。
导入所有 mongoose
。
const mongoose = require("mongoose");
function test() {
const id = mongoose.Types.ObjectId();
// other code
}
module.exports = test;
仅导入 ObjectId
。
const ObjectId = require("mongoose").Types.ObjectId;
function test() {
const id = ObjectId();
// other code
}
module.exports = test;
最佳答案
你是对的。在性能和内存使用方面完全没有区别。
一些注意事项:
如果您使用 bundler 创建缩小的捆绑文件,则仅导入您需要的那些内容可能会使 bundler 更好地进行摇树优化并减少 filseize。不过,这仅与客户端代码相关。
如果您只导入那些您实际需要的东西,它会使您的代码稍微更具可读性(例如,您试图找到奇怪的数据库修改的根本原因,因为您浏览了所有导入 mongoose 的文件,如果您只导入 ObjectId,则可以跳过此文件并继续执行相关文件)
关于javascript - "cherry picking"node.js 通过重要的只有一个功能而不是整个包在后端导入有什么好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55441969/