feng xiaohan

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("/");
});