Express 是一个自身功能极简,完全是由路由和中间件构成一个的 web 开发框架:从本质上来说,一个 Express 应用就是在调用各种中间件。
中间件(Middleware) 是一个函数,它可以访问请求对象(request object (req)), 响应对象(response object (res)),和 web 应用中处理请求-响应循环流程中的中间件,一般被命名为 next 的变量
了解中间件
简单讲:中间件 就是匹配路由之前和匹配路由之后做的一系列操作,如果没有next()这个中间件以后程序不会继续向下执行
中间件是怎么运转的
通过app.use/get/post的方法 参数是一个函数 就称为一个中间件 中间件的三个参数 req res next
中间件的功能包括:
- 1、执行任何代码。 2、修改请求和响应对象。3、终结请求-响应循环。 4、 调用堆栈中的下一个中间件。
实际应用
权限判断:没有登录 跳转到登录页面,登录以后就显示登录以后的页面
实际应用
resModel.js
class BaseModel {
constructor(data, message) {
if (typeof data === 'string') {
this.message = data
data = null
message = null
}
if (data) {
this.data = data
}
if (message) {
this.message = message
}
}
}
class SuccessModel extends BaseModel {
constructor(data, message) {
super(data, message)
this.errno = 0
}
}
class ErrorModel extends BaseModel {
constructor(data, message) {
super(data, message)
this.errno = -1
}
}
module.exports = {
SuccessModel,
ErrorModel
}
loginCheck.js
const {
ErrorModel } = require('../model/resModel') ///登录中间件
module.exports = (req, res, next) => {
if (req.session.username) {
next()
return
}
res.json(
new ErrorModel('未登录')
)
}
routes/blogs.js
var express = require('express');
var router = express.Router();
const {
getList,
getDetail,
newBlog,
updateBlog,
delBlog
} = require('../controller/blog')
const {
SuccessModel, ErrorModel } = require('../model/resModel')
const loginCheck = require('../middleware/loginCheck')
router.get('/list', (req, res, next) => {
let author = req.qu