Skip to Content
Node与Express开发(第2版)
book

Node与Express开发(第2版)

by Ethan Brown
June 2021
Intermediate to advanced
290 pages
9h 21m
Chinese
Posts & Telecom Press
Content preview from Node与Express开发(第2版)
98
第 10章
中间件
目前为止,我们已经接触了不少中间件。我们已经使用过现有的中间件(
body-parser
、
cookie-parser
、
static
和
express-session
,稍作列举),甚至还写了自己的中间件(把天气
数据加到模板的上下文、配置
flash
消息和
404
处理函数)
。可是,中间件究竟是什么呢?
从概念上讲,
中间件
是封装功能的一种方式,具体来说这种功能就是操作向应用发起的
HTTP
请求
。在实际应用中,中间件只是一个接收
3
个参数的函数,这
3
个参数分别为:
request
对
象、
response
对象和
next()
函数(
next
函数一会儿再解释)。(还有一种用于错误
处理的接收
4
个参数的形式,本章最后再讨论。
)
中间件是在所谓的
管线
中执行的。你可以将其想象成现实中的一根水管。水从管子的一端
泵上来,在流到最终目的地之前会经过水压计和阀门。这个类比的关键点是
顺序很重要
:
如果你把水压计放在阀门前面,那么跟放在阀门后面相比效果完全不同。与此类似,如果
你有一个阀门可以向水里注入某种东西,那么这个阀门“下游”的水都会包含加入的这种
物质。在
Express
应用中,通过调用
app.use
可以把中间件插入管线中。
Express 4.0
之前的版本必须明确地链入
router
1
,这就使管线复杂化了。链入
router
的位置,
可能会导致路由的顺序错乱,当你混用中间件和路由处理函数时,管线的序列就不那么清
楚了。到了
Express 4.0
,中间件和路由处理函数是按照它们链入的顺序调用的
,这个序列
就清楚多了。
对于未匹配到其他任何路由的请求,使用一个兜底函数来处理,并把这个函数作为管线的 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

面向对象的思考过程(原书第5版)

面向对象的思考过程(原书第5版)

马特 魏斯费尔德
精通模块化JavaScript

精通模块化JavaScript

Nicolás Bevacqua
前端架构设计

前端架构设计

Micah Godbolt

Publisher Resources

ISBN: 9787115565099