Эта статья об использовании глобального маршрутизатора в 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.