javascript - "cherry picking"node.js 通过重要的只有一个功能而不是整个包在后端导入有什么好处吗?

标签 javascript node.js express backend

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

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

我的想法是:

  1. Node.js 只导入一次模块,因此导入成本不应增加,当使用带 require 的点符号时,它首先需要/导入整个包,因此再次导入成本应该没有差异。

  2. 我在导入时使用 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/

相关文章:

node.js - 使用 Express 从模板内部访问 mountpath 变量

javascript - 如何获取当前登录用户authservice的用户名

node.js - GraphQLJS 使用 .graphql 文件从 NodeJS 进行查询

javascript - 任何人都使用 Pyjamas (pyjs) python to javascript 编译器(如 GWT ..)

javascript - 如何将html表单数据导出到json文件

node.js - 如何正确使用函数 populate()

node.js - 从 Postgres - Node/React 返回图像 url 到前端

javascript - 基于查询字符串的重定向

javascript - 用具有相同文本的输入替换跨度

javascript - 使用 pushState 为 Backbone SPA 配置 node express