Лучший подход для использования require в nodeJs - PullRequest
0 голосов
/ 22 ноября 2018

Мне нужно знать разницу между этими двумя подходами, которые разработчик использует при разработке nodeJS для включения модуля.

  1. Первый подход (передача модуля в приложение путем его импорта один раз и использования его с помощьюпередача в качестве параметра или привязка его к приложению в качестве свойства)

Server.js (точка входа в приложение)

let app = require('express').express();
let Router = require("./routes");
let SomeModule = require("./some-module");
.....
.....

Router.mountAPI("/api", app, SomeModule);
.....
....

маршруты.js (передача предварительно импортированного модуля контроллерам в разных файлах)

let Ctrl1fun = require("./ctrl1");
let Ctrl2fun = require("./ctrl2");

exports.mountAPI = function(mount, app, SomeModuleToUseInController) {
    app.use(mount + '/endpoint1', Ctrl1fun(SomeModuleToUseInController));
    app.use(mount + '/endpoint2', Ctrl2fun(SomeModuleToUseInController));
};

ctrl1.js (контроллер для конечной точки 1)

module.exports = function(SomeModule) {
....
....
//using SomeModule
}
// This file may contain some other controller function for simplicity i took only one 

ctrl2.js (контроллер для конечной точки 2)

module.exports = function(SomeModule) {
....
....
//using SomeModule
}
// This file may contain some other controller function for simplicity i took only one 

2. Второй подход (каждый контроллер импортирует модуль)

Server.js (точка входа в приложение)

let app = require('express').express();
let Router = require("./routes");
.....
.....

Router.mountAPI("/api", app);
.....
....

rout.js (модуль импортирован в контроллеры)

let Ctrl1fun = require("./ctrl1");
let Ctrl2fun = require("./ctrl2");

exports.mountAPI = function(mount, app) {
    app.use(mount + '/endpoint1', Ctrl1fun());
    app.use(mount + '/endpoint2', Ctrl2fun());
};

ctrl1.js (контроллер для конечной точки 1)

let SomeModule = require("./some-module");

module.exports = function() {
....
....
//using SomeModule
}
// This file may contain some other controller function for simplicity i took only one 

ctrl2.js (контроллер для конечной точки 2)

let SomeModule = require("./some-module");
module.exports = function() {
....
....
//using SomeModule
}
// This file may contain some other controller function for simplicity i took only one 

Ведьма лучшеесли мы рассмотрим

  1. Размер приложения (API и функции контроллеров в разных файлах контроллеров)
  2. Производительность приложений
  3. Рекомендации

1 Ответ

0 голосов
/ 22 ноября 2018

Разница в размерах и производительности будет незначительной.

Второй подход проще, и я считаю его лучшим, если вам не нужно вводить разные модули в один и тот же тип контроллера, напримеруниверсальный контроллер CRUD, параметризованный по типу модели

...