Глобальный маршрутизатор в Express для DRY-кода

Эта статья об использовании глобального маршрутизатора в Express для DRY-кода.

При разработке приложения Node.js с Express у нас обычно есть два или более маршрутов.
Если мы используем класс express.Router, чтобы поместить каждый маршрут в отдельный файл, нам всегда придется начинать с одного и того же блока кода:

const express = require("express")
const router = express.Router()
Вход в полноэкранный режим Выход из полноэкранного режима

Есть лучший подход — использование глобального маршрутизатора.

В главном файле сервера мы разберем express.Router на global.router, присвоенный переменной router, и в каждом маршруте мы будем использовать только этот глобальный маршрутизатор.

Допустим, у нас есть только два маршрута: main "/" и about "/about".
Следуя общему пути, любой маршрут в своем собственном файле будет выглядеть как :

// /routes/aRoute.js
const express = require("express")
const router = express.Router()

router.get("/", (req, res) => {
    res.send("A route content")
})
Вход в полноэкранный режим Выход из полноэкранного режима

Затем, в главном файле сервера мы будем иметь :

// /index.js
...
app.use("/a-route", require("./routes/aRoute"))
...
Вход в полноэкранный режим Выход из полноэкранного режима

Но с помощью глобального маршрутизатора мы можем сделать следующее :

// /index.js

const express = require("express")
const app = express()

// Parse an express router to a global router variable
const router = (global.router = express.Router())
// Use the global router variable
app.use(router)

// Routes
app.use("/", require("./routes/main"))
app.use("/", require("./routes/about"))

// Launching the app on port 3000
app.listen(3000, () => {
    console.log(`App 🚀 @ http://localhost:3000`)
})
Войти в полноэкранный режим Выйти из полноэкранного режима

Тогда наши два маршрута будут выглядеть следующим образом:

// /routes/main.js

const router = global.router

router.get("/", (req, res) => {
    res.send("Welcome to the main route")
})

module.exports = router
Вход в полноэкранный режим Выход из полноэкранного режима
// /routes/about.js

const router = global.router

router.get("/about", (req, res) => {
    res.send("Welcome to the about route")
})

module.exports = router
Войти в полноэкранный режим Выход из полноэкранного режима

Надеюсь, это поможет вам написать DRY-код.

SYA,
LebCit.

Оцените статью
devanswers.ru
Добавить комментарий