对于Node中Express框架的中间件概念的感知
中间件是什么呢?
中间件就是客户端http请求发起传送到服务器和服务器返回响应之间的一些处理函数。
为什么要使用中间件?
var express = require('express')
var app = express()
app.use(function(req,res) {
res.end('404 NOT FOUND')
}
app.listen(3000,function(){
console.log('running...');
}
所有对该服务器的请求最终都会返回404 NOT FOUND,无论是路径是什么
var express = require('express')
var app = express()
app.use('/public',function(req,res,next) {
res.end('you are public');
}
app.listen(3000,function(){
console.log('running...')
}
只要客户端访问该服务器的地址是以public开头(即127.0.0.1:3000/public/xxx),那么就会返回you are public 字符串
var express = require('express')
var app = express()
// 中间件1
app.get('/get/puclic',function(req,res){
res.end('get!');
}
// 中间件2
app.post('/post/public',function(req,res) {
res.end('post!');
}
app.listen(3000,function(){
console.log('running...');
}
客户端只有通过get方式访问127.0.0.1:3000/get/public时才会进入中间件1,只有通过post方式访问127.0.0.1:3000/post/public时才会进入中间件2,只有这两者完全匹配才会进入对应的中间件

以下面的代码为例进一步说明中间件的执行顺序
var express = require('express');
var app = express()
//中间件1
app.use(function(req,res) {
console.log('非严格');
})
//中间件2
app.use('/public',function(req,res,next) {
console.log('半严格');
next();
})
//中间件3
app.get('/public',function(req,res) {
console.log('严格 get');
})
//中间件4
app.post('/public',function(req,res) {
console.log('严格 post');
})
//中间件5
app.get('/public',function(req,res) {
console.log('严格 get');
})
app.listen(3000,function() { console.log('running...') })
此时客户端访问/public,那么首先会进入中间件1,因为有执行next函数,所以直接寻找后面能够匹配的中间件,进入中间件2,中间有执行next函数,所以进入中间件3,但是中间件3没有next函数,所以不再执行,所以输出的语句是‘非严格’ '半严格' '严格 get'
如果是下面代码,请求/public后结果又是怎样呢?
var express = require('express');
var app = express()
app.use('/img',function(req,res) {
console.log('半严格');
})
app.get('/public',function(req,res) {
console.log('严格 get');
})
app.post('/public',function(req,res) {
console.log('严格 post');
})
app.listen(3000,function() { console.log('running...') })
结果是输出'严格 get',请求到达服务器后,从上往下逐渐匹配,匹配到第二个中间件,进入执行,但是该中间件没有执行next函数,所以终止
综上所述,我们可以知道,第三方中间件的安装执行是有讲究的
对于Node中Express框架的中间件概念的感知的更多相关文章
- Node.js Express 框架
Node.js Express 框架 Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP ...
- Node.js Express框架
Express 介绍 Express是一个最小的,灵活的Node.js Web应用程序框架,它提供了一套强大的功能来开发Web和移动应用程序. 它有助于基于Node Web应用程序的快速开发.下面是一 ...
- node.js中express框架的基本使用
express是一个基于node.js平台的,快速,开放,极简的web开发框架. 一.安装 express npm install express --save 二.简单使用 express //引入 ...
- Node.js Express 框架学习
转载:http://JavaScript.ruanyifeng.com/nodejs/express.html#toc0 感觉很牛的样子,不过觉得对初学者没太大用,里面很多例子用的api都没有详细的说 ...
- node之Express框架
Express是node的框架,通过Express我们快速搭建一个完整的网站,而不再只是前端了!所以Express还是非常值得学习的! express有各种中间件,我们可以在官方网站查询其用法. Ex ...
- Node.js Express 框架 Express
Express 简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速 ...
- 44.Node.js Express 框架--web框架
转自:http://www.runoob.com/nodejs/nodejs-express-framework.html Express 简介 Express 是一个简洁而灵活的 node.js W ...
- Node.js+Express框架+Mongo学习(一)第一个node.js实例
1.在桌面新建一个空的文件夹,比如叫node,当然也可以在其它地方新建. 2.命令行进入到所新建的文件夹的目录,下载Express框架,再在这个文件夹里新建一个叫final的项目 3.在项目(fina ...
- node中express的中间件之cookieParser
cookieParser中间件用于获取web浏览器发送的cookie中的内容.在使用了cookieParser中间件后, 代表客户端请求的htto.IncomingMessage对象就具有了一个coo ...
随机推荐
- Chrome应用商店打不开的问题
方法一.谷歌访问助手(推荐) 谷歌访问助手是一款免费的谷歌代理插件,不用配置即可打开Chrome应用商店,而且速度很不错. 1.根据自己使用的浏览器点击对应版本的插件.详细安装都在下面链接中. 下载地 ...
- cBioPortal 数据库
http://www.cbioportal.org/ 参考连接 http://www.geneseed.com.cn/page464?article_id=413
- python 函数注解 参数后面加冒号 函数后面加箭头
由于 python 是动态语言,在定义函数时,参数是不需要指定类型的.当调用别人写的函数,而该函数有没有文档说明,只有通过看源代码才能知道需要传递什么类型的参数. 不过 python 提供了一种机制可 ...
- Cesium中的几种坐标和相互转换【转】
几个重要的坐标对象:1.世界坐标 Cartesian3:笛卡尔空间直角坐标系 new Cesium.Cartesian3(x, y, z) 可以看作,以椭球中心为原点的空间直角坐标系中的一个点的坐标. ...
- python操作mysql基础一
python操作mysql基础一 使用Python操作MySQL的一些基本方法 前奏 为了能操作数据库, 首先我们要有一个数据库, 所以要首先安装Mysql, 然后创建一个测试数据库python_te ...
- Deepin系统中手动开启swap的方法
Deepin系统中手动开启swap的方法 如何设置 swap(交换空间)的大小建议设置和你的实际物理内存一样大,如你的内存是8G的,则可将下面的count的值设为8192(当然这只是参考值,你可根据你 ...
- linux系统错误码大全
#define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /* No such file or directory */ #defi ...
- Windows上的那些效率神器,让你快到飞起
转自:https://zhuanlan.zhihu.com/p/41771626 本文为Windows上有哪些让你效率倍增的软件和小技巧系列第二篇,上一篇请点击蓝字查看:打造高逼格PC,让你的电脑好用 ...
- Android Studio + opencv开发配置
1 下载Android Studio https://developer.android.com/studio/archive?hl=zh-cn 2 安装Android Studio 安装完成,下载S ...
- 移动端Web框架
[参考]移动端 UI设计尺寸(一)篇 [参考]移动端界面设计之尺寸篇 [参考]介绍几个移动web app开发框架 [参考]移动webapp前端ui用哪个框架好 H5 做移动开发也分两种,一种就是正常的 ...