Мне нужно знать разницу между этими двумя подходами, которые разработчик использует при разработке nodeJS для включения модуля.
- Первый подход (передача модуля в приложение путем его импорта один раз и использования его с помощьюпередача в качестве параметра или привязка его к приложению в качестве свойства)
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
Ведьма лучшеесли мы рассмотрим
- Размер приложения (API и функции контроллеров в разных файлах контроллеров)
- Производительность приложений
- Рекомендации