Express.js模块化路由(Router)
基本使用
使用 express.Router 类来创建可安装的模块化路由处理程序。Router 实例是完整的中间件和路由系统;因此,常常将其称为“微型应用程序”(像是在服务器内部嵌套一个小型的服务器)。
router 的用法和
const app = express()创建的 app 是一样的。
routes/oneRoute.js:
const express = require("express");
const router = express.Router(); // 创建Router实例
router.use("/add-product", (req, res, next) => {
res.send(
'<form action="/product" method="POST"><input type="text" name="title"><button type="submit">Add Product</button></form>'
);
});
router.post("/product", (req, res, next) => {
console.log(req.body);
res.redirect("/");
});
module.exports = router; // 导出router
在某个文件中导入:
const oneRoute = require("./routes/oneRoute");
app.use(oneRoute);
添加公共路径路由(过滤路径)
有时候我们的模块化路由里中间件的路由地址有一段是相同,可以在注册这个路由模块时通过use来定义:
...
app.use('/admin', adminRoutes); // 公共路径
...
routes/oneRoute.js:
// /admin/add-product => GET
router.get("/add-product", (req, res, next) => {
res.send(
'<form action="/admin/product" method="POST"><input type="text" name="title"><button type="submit">Add Product</button></form>'
);
});
// /admin/product => POST
router.post("/product", (req, res, next) => {
console.log(req.body);
res.redirect("/");
});