首页 > 解决方案 > 通过仅重要的一个功能而不是整个包在后端“采摘”node.js 导入有什么好处?

问题描述

假设在我的文件中我只需要包中的ObjectId函数mongoose

mongoose只导入所述函数而不是在我的文件中导入整个函数有什么好处(CPU、内存、速度......) ?

我的想法是:

  1. Node.js 导入模块一次,因此导入成本不应该增加,并且当使用点表示法时,它首先需要/导入整个包,因此再次导入成本应该没有差异。

  2. 我在导入时使用樱桃挑选导入设置的变量更小,因此需要更少的内存,但由于猫鼬是一个对象,因此该变量仅包含对该对象的引用,因此无论我是否挑选樱桃都应该是无关紧要的。这不像我将整个猫鼬包设置到我的变量中。我只是设置一个参考。

全部导入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;

标签: javascriptnode.jsexpressbackend

解决方案


你说的对。在性能和内存使用方面完全没有区别。

一些注意事项:

  • 如果您使用捆绑器创建缩小的捆绑文件,则仅导入您需要的那些内容可能会使捆绑器更好地进行 treeshaking 并减少 filseize。不过,这仅与客户端代码有关。

  • 如果你只导入那些你真正需要的东西,它会让你的代码更具可读性(例如,你试图找到一个奇怪的数据库修改的根本原因,因为你浏览了所有导入猫鼬的文件,如果你只导入 ObjectId您可以跳过此文件并继续阅读相关文件)


推荐阅读