Есть ли какая-то польза от импорта вишни node.js в бэкэнд важной только одной функцией вместо всего пакета? - PullRequest
1 голос
/ 31 марта 2019

Допустим, в моем файле мне нужна только функция ObjectId из пакета mongoose.

Есть ли какая-либо выгода (процессор, память, скорость ...) только для импорта указанной функции вместо импорта всего mongoose в мой файл?

Мои мысли:

  1. Node.js импортирует модуль один раз, поэтому затраты на импорт не должны увеличиваться, и при использовании точечной нотации с требовать, чтобы он сначала требовал / импортировал весь пакет, поэтому не должно быть никакой разницы в затратах на импорт снова.

  2. Переменная, которую я установил при импорте с выбранным вишневым импортом, меньше и поэтому требует меньше памяти, но, поскольку mongoose является объектом, переменная содержит только ссылку на этот объект, поэтому не имеет значения, выбираю ли я вишню или не. Это не так, как будто я устанавливаю весь пакет 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;

1 Ответ

1 голос
/ 31 марта 2019

Вы правы.Нет никакой разницы относительно производительности и использования памяти.

Некоторые примечания:

  • Если вы используете упаковщик для создания минимизированного связанного файла, импортируете только те вещи, которыевам может понадобиться включить упаковщик, чтобы улучшить взаимодействие с деревьями и уменьшить размер файла.Это относится только к клиентскому коду.

  • Это делает ваш код немного более читабельным, если вы импортируете только те вещи, которые вам действительно нужны (например, вы пытаетесь найти основную причинустранная модификация базы данных, для которой вы просматриваете все файлы, которые импортируют mongoose, если вы только импортируете ObjectId, вы можете пропустить этот файл и перейти к соответствующим)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...