其他分享
首页 > 其他分享> > 3.2 Express中间件的初体验

3.2 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个使用注意

9.中间件的分类

1.应用级别的中间件

 

 2.路由级别的中间件

 

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