欢迎光临
我们一直在努力

Express.03 中间件核心概念

文章目录

中间件简介

中间件可以理解为在接受请求和响应请求之间的一些列操作。事实上,express是一个路由和中间件的web框架、express应用程序可以理解为一系列中间件函数的调用。

中间件可以执行以下的任务:

  • 执行任何代码
  • 对请求和响应进行更改,
  • 结束请求/响应循环
  • 调用堆栈中的下一个中间件函数

中间件主要分为五类:

  • 应用层中间件
  • 路由中间件
  • 内置中间件
  • 错误处理中间件
  • 第三方中间件

应用层中间件

应用层中间件绑定到app对象使用app.use( )方法,通常会结合method(get/post)并列使用。

  • 注意:如果不使用next()则不会进入下一个中间件
const express = require('express')
const app = express()
app.use(function(req,res,next){
    res.send('在访问method之前执行...')
    next() 
})
app.get('/',(req,res,next)=>{
    res.send('method执行了...')
})
  • 还记得之前讲的吗?我们可以在一个use()里写入多个回调函数,应用层中间件我们还可以这么写
app.use(function(req,res,next)=>{
    res.send('...')
    next()
},function(req,res)=>{
    res.send('...')
})

路由中间件

路由中间件和应用级中间件类似,但路由中间件要绑定express.Router()

const router = express.Router()

在匹配路由时,我们是可以使用router.use( ) 或 router.get( )等

const express = require('express')
const router = express.Router()
router.use('/',(req,res,next)=>{
    next()
})
router.get('/',(req,res,next)=>{
    res.send()
})

错误中间件

错误中间件指当我们匹配不到路由时执行的操作,错误处理中间件需要提供四个变量参数。一般情况下,我们会把错误处理中间件放在最下面,这样就可以对错误集中处理。

const express = require('express')
const app = express()

app.get("/",function(req,res,next){
    const err=new Error('Not Found');
    res.send("主页");
    next(err);
});

app.use("/user",function(err,req,res,next){
    console.log("用户登录");
    next(err);
},function(req,res,next){
    res.send("用户登录");
    next();
});

app.use(function(req,res){
    res.status(404).send("未找到指定页面");
});

app.listen(8080);

内置中间件

从版本4.x开始,express只剩下一个内置中间件express.static

express.static(root, [options]);

express.static可以指定要加载的静态资源,root代表加载静态资源的路径,options作为可选参数,具体请参照:

属性 描述 类型 默认值
dotfiles 是否响应点文件。供选择的值有"allow","deny"和"ignore" String "ignore"
etag 使能或者关闭etag Boolean true
extensions 设置文件延期回退 Boolean true
index 发送目录索引文件。设置false将不发送。 Mixed "index.html"
lastModified 设置文件在系统中的最后修改时间到Last-Modified头部。可能的取值有falsetrue Boolean true
maxAge 在Cache-Control头部中设置max-age属性,精度为毫秒(ms)或则一段ms format的字符串 Number 0
redirect 当请求的pathname是一个目录的时候,重定向到尾随"/" Boolean true
setHeaders 当响应静态文件请求时设置headers的方法 Funtion
var options = {
  dotfiles: 'ignore',
  etag: false,
  extensions: ['htm', 'html'],
  index: false,
  maxAge: '1d',
  redirect: false,
  setHeaders: function (res, path, stat) {
    res.set('x-timestamp', Date.now());
  }
}

app.use(express.static('public', options));

第三方中间件

采用引入外部模块的方式来获取更多的应用操作,这些外部引入的模块被称为第三方中间件。如:body-parse、cookie、session等

var express = require('express');
var app = express();
var cookieParser = require('cookie-parser');
赞(0) 打赏
未经允许不得转载:散人研 » Express.03 中间件核心概念
分享到: 更多 (0)

评论 抢沙发

4 + 9 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏