NodeJS + Express альтернативные способы обработки маршрутов - PullRequest
0 голосов
/ 09 октября 2018

Как человек, который все еще понимает 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...