#javascript #node.js #express #backend
#javascript #node.js #экспресс #серверная часть
Вопрос:
Допустим, в моем файле мне нужна только ObjectId
функция из mongoose
пакета.
Есть ли какая-либо выгода (процессор, память, скорость …) от импорта только указанной функции вместо импорта всего mongoose
в мой файл?
Мои мысли таковы:
-
Node.js импортирует модуль один раз, поэтому затраты на импорт не должны увеличиваться, и при использовании точечной нотации с require сначала требуется / импортируется весь пакет, поэтому снова не должно быть разницы в затратах на импорт.
-
Переменная, которую я устанавливаю при импорте с помощью cherry picked import, меньше и, следовательно, требует меньше памяти, но поскольку 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:
Вы правы. Нет никакой разницы в отношении производительности и использования памяти.
Некоторые примечания:
-
Если вы используете пакетировщик для создания уменьшенного объединенного файла, импорт только тех элементов, которые вам нужны, может позволить пакетировщику выполнять лучшую разбивку по деревьям и уменьшить размер файла. Однако это относится только к клиентскому коду.
-
Это делает ваш код немного более читаемым, если вы импортируете только те вещи, которые вам действительно нужны (например, вы пытаетесь найти первопричину странной модификации базы данных, для этого вы просматриваете все файлы, которые импортируют mongoose, если вы импортируете только ObjectId, вы можете пропустить этот файл и перейти к соответствующим)