Я получил веб-сайт, который отображает только шаблоны E JS, используя Express. js маршрутизацию. Все возможные маршруты в файле /routes/index.js
. Поскольку размер файла будет больше (будет добавлено несколько новых маршрутов), я хочу разбить файл на более дружественный статус для будущих разработчиков. И хотя есть несколько категорий, URL имеет только 1 уровень глубины.
https://i.stack.imgur.com/J5eEq.png <-навигация с категориями и страницами </p>
Пример: на картинке вы можете увидеть несколько категорий, но если вы нажмете «Диаграмма азартных игр», она перенаправить вас на маршрут /acidbase-belance
. Более логичным будет /acidbase/belance
. И есть много повторений кода.
Текущая реализация:
router.get("/acidbase", function (req, res, next) {
res.render("template", { title: "Acid-base Simulator", page: "acidbase" });
});
router.get("/acidbase-intro", function (req, res, next) {
res.render("template", {
title: "The ABC of Acid-base balance",
page: "acidbaseintro",
});
});
router.get("/acidbase-the-interpreter", function (req, res, next) {
res.render("template", {
title: "The Interpreter",
page: "acidbaseInterpreter",
});
});
router.get("/acidbase-balance", function (req, res, next) {
res.render("template", {
title: "Acid-base balance",
page: "acidbaseBalance",
});
});
router.get("/cardiovascular", function (req, res, next) {
res.render("template", {
title: "Cardiac and vascular function coupling",
page: "cardiovascular",
});
});
router.get("/cardiovascular-theory", function (req, res, next) {
res.render("template", {
title: "Cardiovascular theory",
page: "cardiovascularTheory",
});
});
router.get("/pvsimulator", function (req, res, next) {
res.render("template", { title: "pV Diagram", page: "cardiovascularpv" });
});
router.get("/electrophysiology2", function (req, res, next) {
res.render("template", {
title: "Nernst potentials",
page: "electrophysiology2",
});
});
router.get("/electrophysiology", function (req, res, next) {
res.render("template", {
title: "Equilibrium membrane potential",
page: "electrophysiology",
});
});
...
...
...
Что было бы наилучшей практикой для рефакторинга этого?
Мои идеи :
var possible_routes = [{ categorie: "acidbase", subroutes: [{ title: "test", page: "acid" }] }];
router.get("/:categorie/:page", function (req, res, next) {
var categorie = possible_routes.find(obj => {
return obj.categorie === req.params.categorie
})
...
...
...
if (typeof req.params.page !== "undefined")
res.render("template", { title: "Express", page: req.params.categorie/req.params.page });
});
- или сочетание двух предыдущих идей, разделение категорий на отдельные файлы и создание механизма для страниц.