Способ, которым это требуется, прост. Он идет к указанному файлу и выполняет все, а затем возвращает module.exports для «модуля», который впервые вызвал require, и кэширует свой ответ для следующего последующего вызова. .
Итак, давайте предположим, что вы звоните b. js
//b.js
const a = require ('a')
const c = require ('c')
module.exports = {a,c}
b. js, a. js и c. js будут выполнены.
Или вы можете сделать только и напрямую потребовать a. js ;
//a.js
//no requires
const a = someFunction();
modules.exports = a;
В этом простом случае очевидно, что вызов "a" модуля будет быстрее. Но это при условии, что вы используете только a модуль устанавливаемой зависимости и , что почти никогда не бывает . В любом случае, если вызывать библиотеку целиком, она будет кэшироваться во всем приложении, и последующие вызовы будут выполняться быстрее. Так что это также зависит от того, как разработано ваше приложение.
Если вы собираетесь использовать какой-либо из других модулей библиотеки впоследствии, кэширование на одном go (при инициализации приложения) должно быть способом до go. Это означает, что требуется полная зависимость.
Также я не рассматриваю циклическую зависимость (случай, когда требуется a. js, также требуется b. js) потому что он считается в большинстве случаев плохо разработанным кодом (даже с поддержкой Node.js), и если это происходит, и вы не знаете, звоните a. js или b. js не имеет значения, потому что они будут вызываться (несмотря на ваши усилия по оптимизации) и кэшироваться в любом случае.