@kr_ilya

Разумно ли импортировать одни и те же библиотеки в каждый модуль?

Если мне нужны одни и те же библиотеки в разных модулях, я делаю так:
a.js
const os = require('os'),
	path = require('path'),
	fs = require('fs'),
	kb = require('./modules/keyboards.js'),
	config = require('./config.js');

var state = {};

require('./modules/b')(state);

...


b.js
const os = require('os'),
	path = require('path'),
	fs = require('fs'),
	kb = require('../modules/keyboards.js'),
	config = require('../config.js');

module.exports = (state) => {

...
}


А правильно ли вообще так делать? Как это влияет на производительность? Как это сделать лучше?
Я считаю, что можно все модули передавать напрямую в функцию (как это сделано со state), но я не хочу захламлять аргументы.
  • Вопрос задан
  • 121 просмотр
Решения вопроса 1
Kozack
@Kozack
Thinking about a11y
В каждом модуле импортируйте всё и исключительно то, что нужно для работы непосредственно этого модуля. Так ваша система будет гибче и работать с каждым модулем отдельно будет проще. Модули устроены так, что импортируются только раз, не зависимо от того, сколько раз вы вызываете require.

Ваш подход вполне нормальный, если вы конечно не импортируете в модуль А что-то что используется только в модуле Б и не используется в модуле А непосредственно.

Выносить все импорты в отдельный файл, как предлагает Дмитрий я бы не стал.

А
все модули передавать напрямую в функцию (как это сделано со state)
оправдано только в том случае, если вы реализуете паттерн Стратегия
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dimoff66
Кратко о себе: Я есть
Тогда уж просто соберите их все в одном файле в объект и импортируйте объект, зачем так сложно?

const os = require('os'),
  path = require('path'),
  fs = require('fs'),
  kb = require('../modules/keyboards.js'),
  config = require('../config.js');

module.exports = { os, path, fs, kb, config }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы