6. 路由模块化
可以通过express.Router创建模块化的、可挂载的路由处理程序
1. 新建user模块
// user.js中
const express = require('express')
const router = express.Router() // 这里需要调用
router.get('/list', (req, res) => {
res.send('列表')
})
router.get('/add', (req, res) => {
res.send('新增')
})
router.get('/edit', (req, res) => {
res.send('修改')
})
module.exports = router
2. 挂载该模块
// app.js中
const user = require('./routes/user')
// ...
app.use('/user' , user)
// 可以通过/user/list等进行访问
3. 大型企业级项目架构
- 功能树:
- 项目结构:
express-study
├── app.js // 注册模块整体的路由
├── package.json
├── routes
│ ├── admin // 后台模块
│ │ ├── login.js
│ │ ├── nav.js
│ │ └── user.js
│ ├── admin.js // 后台模块的路由在这里面注册
│ ├── api.js
│ └── index.js
├── static
│ ├── css
│ │ └── base.css
│ └── image
└── views
└── login.html
模块的注册:
注册admin模块的子模块
// admin.js中
const express = require("express");
var router = express.Router()
//引入模块
const user = require("./admin/user")
const login = require("./admin/login")
const nav = require("./admin/nav")
router.get("/",(req,res)=>{
res.send("后台管理中心")
})
//挂载路由
router.use("/user",user)
router.use("/login",login)
router.use("/nav",nav)
module.exports = router
注册admin等模块
const express = require("express");
const bodyParser = require('body-parser')
const ejs = require("ejs");
//引入外部模块
const admin = require("./routes/admin")
const index = require("./routes/index")
const api = require("./routes/api")
const app = express()
//配置模板引擎
app.engine("html",ejs.__express)
app.set("view engine","html")
//配置静态web目录
app.use(express.static("static"))
//配置第三方中间件
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
//配置外部路由模块
app.use("/admin",admin)
app.use("/api",api)
app.use("/",index)
//监听端口 端口号建议写成3000以上
app.listen(3000)
4. Express应用生成器
使用express-generator
可以快速创建一个应用的骨架
// 1.安装
npx express-generator
// 或者
cnpm install -g express-generator
// 2. 创建使用ejs模板的应用
express projectName