Как дополнительно модульно express маршрутов? - PullRequest
1 голос
/ 08 апреля 2020

(рекомендуется это сделать)

Мне кажется, код для маршрутов может быть проще для чтения, а отладка дополнительно модульная. Это хорошая практика?

У нас есть обычный код

В app.js

var users = require('./routes/users');
app.use('/users', users);

В users.js файл У меня есть код для этих маршрутов:

/user
/user/bar
/user/42
/user/42/baz
/user/42/baz/123

Я дал код для get, post, put и use. И я чувствую, что файл слишком грязный.

Рекомендуется ли разделить ./routes/users.js дальше и есть ли шаблон проектирования для него?

Редактировать согласно запросу, хотя это было обобщенно c вопрос

var express = require("express");
var marked = require("marked");
var OfflineMediaModel = require("../models/offlineMediaModel");
const offlineMediaRouter = express.Router();
var fs = require("fs");
var md = require("node-markdown").Markdown;
var path = require("path");
var config = require("../config");

// Middleware
offlineMediaRouter.use("/", function(req, res, next) {});
offlineMediaRouter.use("/podcasts/test", (req, res, next) => {});
offlineMediaRouter
  .post("/podcasts/test", function(req, res) {}) /// this is the only post
  .get("/", function(req, res) {})
  .get("/:podcast", function(req, res) {})
  .use("/:podcast/:episode", function(req, res, next) {})
  .get("/:podcast/:episode", function(req, res) {});
module.exports = offlineMediaRouter;

Меня интересует в гораздо больших проектах, что, будет ли дальнейшая модульность этого кода хорошей идеей или не рекомендуется делать это? Или код в методах маршрутов

1 Ответ

0 голосов
/ 08 апреля 2020

Когда разделить файл маршрутизатора на несколько файлов, это действительно то же самое, что решить, когда разделять любой другой файл кодирования.

  1. Когда создается впечатление, что файл, который вы имеете, становится слишком большим для простого обслуживания и Навигация.
  2. Когда есть границы в том, кто работает над каким кодом или кто отвечает за какой код, облегчающий разработку команды.
  3. При разделении это будет проще, чем дополнительная работа и связанные с этим сложности при выполнении разбиения и использовании нескольких файлов.
  4. Если разбиение не создает ненужных сложностей с ветвлением, объединение других усилий кода, выполняемых в среде групповой разработки.
  5. Когда в коде имеется некоторое количество кода модуль, которым вы хотели бы поделиться с другими модулями или независимо протестировать.
  6. Когда разделяемый код между частями вы разделяете, не слишком усложняет разделение.

Один довольно простой дизайн для разделения файла маршрутизатора должен иметь один основной файл маршрутизатора t Hat создает маршрутизатор и экспортирует его, и это то, о чем знает и загружает ваше основное приложение.

// main-router.js
const router = require('express').Router();

// some route definitions here

module.exports = router;

Затем вы можете создавать файлы под-маршрутов:

// sub-router1.js
module.exports = function(router) {
    router.get(path1, ...)

    router.post(path2, ...)
}

Затем вы интегрируете sub-router1. js в файл основного маршрутизатора, например:

// main-router.js
const router = require('express').Router();

// possibly some route definitions here

// load and initialize sub-router1.js
require('./sub-router1.js)(router);

// possibly some route definitions here

module.exports = router;

Имейте в виду, что когда вы разбиваете маршруты на подфайлы, вы должны делать это таким образом, чтобы можно было упорядочить последовательность определения маршрутов соответствующим образом, так как вы сможете упорядочить только в отдельных файлах и последовательность загрузки файлов. Таким образом, перекрывающиеся маршруты с определенным требованием к последовательности, вероятно, должны находиться в одном файле, где их порядок можно точно контролировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...