6. 路由模块化

可以通过express.Router创建模块化的、可挂载的路由处理程序

1. 新建user模块

  1. // user.js中
  2. const express = require('express')
  3. const router = express.Router() // 这里需要调用
  4. router.get('/list', (req, res) => {
  5. res.send('列表')
  6. })
  7. router.get('/add', (req, res) => {
  8. res.send('新增')
  9. })
  10. router.get('/edit', (req, res) => {
  11. res.send('修改')
  12. })
  13. module.exports = router

2. 挂载该模块

  1. // app.js中
  2. const user = require('./routes/user')
  3. // ...
  4. app.use('/user' , user)
  5. // 可以通过/user/list等进行访问

3. 大型企业级项目架构

  • 功能树:

6. 路由模块化 - 图1

  • 项目结构:
  1. express-study
  2. ├── app.js // 注册模块整体的路由
  3. ├── package.json
  4. ├── routes
  5. ├── admin // 后台模块
  6. ├── login.js
  7. ├── nav.js
  8. └── user.js
  9. ├── admin.js // 后台模块的路由在这里面注册
  10. ├── api.js
  11. └── index.js
  12. ├── static
  13. ├── css
  14. └── base.css
  15. └── image
  16. └── views
  17. └── login.html
  • 模块的注册:

    1. 注册admin模块的子模块
  1. // admin.js中
  2. const express = require("express");
  3. var router = express.Router()
  4. //引入模块
  5. const user = require("./admin/user")
  6. const login = require("./admin/login")
  7. const nav = require("./admin/nav")
  8. router.get("/",(req,res)=>{
  9. res.send("后台管理中心")
  10. })
  11. //挂载路由
  12. router.use("/user",user)
  13. router.use("/login",login)
  14. router.use("/nav",nav)
  15. module.exports = router
  1. 注册admin等模块
  1. const express = require("express");
  2. const bodyParser = require('body-parser')
  3. const ejs = require("ejs");
  4. //引入外部模块
  5. const admin = require("./routes/admin")
  6. const index = require("./routes/index")
  7. const api = require("./routes/api")
  8. const app = express()
  9. //配置模板引擎
  10. app.engine("html",ejs.__express)
  11. app.set("view engine","html")
  12. //配置静态web目录
  13. app.use(express.static("static"))
  14. //配置第三方中间件
  15. app.use(bodyParser.urlencoded({ extended: false }))
  16. app.use(bodyParser.json())
  17. //配置外部路由模块
  18. app.use("/admin",admin)
  19. app.use("/api",api)
  20. app.use("/",index)
  21. //监听端口 端口号建议写成3000以上
  22. app.listen(3000)

4. Express应用生成器

使用express-generator 可以快速创建一个应用的骨架

  1. // 1.安装
  2. npx express-generator
  3. // 或者
  4. cnpm install -g express-generator
  5. // 2. 创建使用ejs模板的应用
  6. express projectName