Как человек, который все еще понимает NodeJS и лучшие практики, мне было интересно, приемлем ли следующий код?
Основная причина, по которой я протестировал этот подход и не использовал шаблон Express, заключается в том, что я просто не хочу, чтобы в каждом файле маршрута была часть 'require'.Например, экспресс требуется на каждом маршруте, а также в app.js
Кроме того, благодаря моему подходу я могу расширять методы маршрутов и делать с ним больше магии.Также в некоторых случаях npm загружает модули несколько раз, если структура папок немного отключена.При моем подходе я просто отправляю объект, содержащий данные модуля, в функции, которые зависят от него.
Подход экспресс-шаблона:
app.js:
let indexRouter = require('./routes/routes');
app.use('/', indexRouter);
route.js:
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
module.exports = router;
Мой подход:
app.js:
let Routes = require('./modules/routes.js').Routes;
let routes = new Routes;
Routes = undefined;
routes.create(app, 'home.js');
rout.js:
var Routes = function () {};
Routes.prototype.create = function (app, route_file){
//Load route file
let newRoute = require('../routes/'.concat('',route_file)).newRoute;
//Create instance of it
let Routes = new newRoute;
//Finally, create the routes
Routes = Routes.create(app);
//Cleaning
newRoute = undefined;
Routes = undefined;
};
exports.Routes = Routes;
home.js:
var newRoute = function () {};
newRoute.prototype.create = function (app) {
app.get('/home', sayHi);
function sayHi(req, res){
res.send('Hello World!');
};
};
exports.newRoute = newRoute;