javascript - 通过仅重要的一个功能而不是整个包在后端“采摘”node.js 导入有什么好处?
问题描述
假设在我的文件中我只需要包中的ObjectId
函数mongoose
。
mongoose
只导入所述函数而不是在我的文件中导入整个函数有什么好处(CPU、内存、速度......) ?
我的想法是:
Node.js 导入模块一次,因此导入成本不应该增加,并且当使用点表示法时,它首先需要/导入整个包,因此再次导入成本应该没有差异。
我在导入时使用樱桃挑选导入设置的变量更小,因此需要更少的内存,但由于猫鼬是一个对象,因此该变量仅包含对该对象的引用,因此无论我是否挑选樱桃都应该是无关紧要的。这不像我将整个猫鼬包设置到我的变量中。我只是设置一个参考。
全部导入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;
解决方案
你说的对。在性能和内存使用方面完全没有区别。
一些注意事项:
如果您使用捆绑器创建缩小的捆绑文件,则仅导入您需要的那些内容可能会使捆绑器更好地进行 treeshaking 并减少 filseize。不过,这仅与客户端代码有关。
如果你只导入那些你真正需要的东西,它会让你的代码更具可读性(例如,你试图找到一个奇怪的数据库修改的根本原因,因为你浏览了所有导入猫鼬的文件,如果你只导入 ObjectId您可以跳过此文件并继续阅读相关文件)
推荐阅读
- ios - 如何使用 OpenSans 自定义字体在 **Swift 4** 中为文本范围添加下划线和粗体
- stripe-payments - 如何为其他客户发送 Stripe 的测试 webhook?
- java - 如何在 JavaFX 中嵌入字体?
- android-sqlite - sqlitedatabase 更新 where 子句
- collision - P5.JS:碰撞?
- excel - 在一个主 Excel 2013 中创建跨 12 个工作簿的数据副本
- spring-batch - 如何在spring批处理中按顺序划分串行步骤
- php - 公共函数返回 NULL 而不是数组
- mysql - SQL 填充常量 Incase 连接两个表时不匹配
- javascript - 包装函数的示例 Jest 单元测试