ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

3.2 Express中间件的初体验

2022-09-03 13:00:42  阅读:161  来源: 互联网

标签:初体验 req res app Express 中间件 next express


1.定义中间件函数

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

const mw = function (req, res, next) {
    console.log('这是最简单的中间件函数');

    //把流转关系转交给下一个中间件或路由
    next()
}

app.listen('80', () => {
    console.log('http://127.0.0.1');
})

2.全局生效的中间件

客户端发起的任何请求,到达服务器之后,都会触发的中间件,叫做全局生效的中间件。

 

 

const express = require('express');

const app = express();


const mw = function (req, res, next) {
    console.log('这是最简单的中间件函数');

    //把流转关系转交给下一个中间件或路由
    next()
}

//当发起请求之后,会先把请求交给中间件,所以会调用mw,接着使用next交给下一个
//如果没有就会默认给下面的路由


//将mw注册为全局生效的中间件
app.use(mw)

app.get('/', (req, res) => {
    res.send('HOme page')
})
app.get('/user', (req, res) => {
    res.send('Userpage')
})



app.listen('80', () => {
    console.log('http://127.0.0.1');
})

 

 3.定义全局中间件的简化形式

const express = require('express');

const app = express();


// const mw = function (req, res, next) {
//     console.log('这是最简单的中间件函数');

//     //把流转关系转交给下一个中间件或路由
//     next()
// }

// //当发起请求之后,会先把请求交给中间件,所以会调用mw,接着使用next交给下一个
// //如果没有就会默认给下面的路由


// //将mw注册为全局生效的中间件
// app.use(mw)

app.use((req, res, next) => {
    console.log('这是最简单的中间件函数');
    next()
})

app.get('/', (req, res) => {
    res.send('HOme page')
})
app.get('/user', (req, res) => {
    res.send('Userpage')
})

app.listen('80', () => {
    console.log('http://127.0.0.1');
})

 

 4.中间件的作用

多个中间件可以共享同一份req和res,基于这样的操作,我们可以在上游的中间中,

 

 

const express = require('express');

const app = express();


app.use((req, res, next) => {
    const time = Date.now()
    //为req对象,挂载自定义属性,从而把时间共享给后面的所有路由
    console.log('这是最简单的中间件函数');
    req.startTime = time
    console.log(time);
    next()
})

app.get('/', (req, res) => {
    res.send('HOme page' + req.startTime)
})
app.get('/user', (req, res) => {
    res.send('Userpage' + req.startTime)
})



app.listen('80', () => {
    console.log('http://127.0.0.1');
})

5.定义多个全局中间件

可以使用app.use()连续定义多个中间件,客户端请求到达服务器之后,会按照中间件定义的先后顺序依次进行调用,示例代码如下:

const express = require('express'); const app = express();
//定义第一个全局中间件 app.use((req, res, next) => {     console.log('调用了第一个全局中间件');     next() }) //定义第二个全局中间件 app.use((req, res, next) => {     console.log('调用了第二个全局中间件');     next() }) app.get('/', (req, res) => {     res.send('HOme page') }) app.get('/user', (req, res) => {     res.send('Userpage') })
app.listen('80', () => {     console.log('http://127.0.0.1'); })

6.局部生效的中间件

不使用app.use()定义的中间件,叫做局部生效的中间件,示例代码如下:

const express = require('express')

const app = express()

const mw = (req, res, next) => {
    console.log('调用了局部生效的中间件');
    next()
}

app.get('/', mw, (req, res) => {  //在这里先调用的是mw这个局部中间件,其次再调用路由
    res.send('你很棒嘛');
})

app.listen('80', () => {
    console.log('http://127.0.0.1');
})

7.定义多个局部中间件

 

 8.了解中间件的5个使用注意

  • 1.必须在路由之前注册中间件
  • 2.客户端发过来的请求,可以连续调用多个中间件进行处理
  • 3.执行完中间件的业务代码之后,不要忘记调用next()函数
  • 4.为了防止代码混乱,再调用next()后,就不要写代码了
  • 5.连续调用多个中间件时,多个中间件之间共享req和res对象

9.中间件的分类

1.应用级别的中间件

 

 2.路由级别的中间件

 

标签:初体验,req,res,app,Express,中间件,next,express
来源: https://www.cnblogs.com/alwaysrun/p/16652394.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有