node.js中的connect中间件

luoyjx · 2015-06-13 20:45 · 1183次阅读

Connect被定义为Node平台的中间件框架,从定位上看Connect一定是出众的,广泛兼容的,稳定的,基础的平台性框架。如果攻克Connect,会有助于我们更了解Node的世界。Express就是基于Connect开发的。

Connect介绍

如果把一个http处理过程比作是污水处理,中间件就像是一层层的过滤网。每个中间件在http处理过程中通过改写request或(和)response的数据、状态,实现了特定的功能。

下图列出了connect所有内置中间件和部分第三方中间件。完整的中间件列表请进传送门connect中间件

图中根据中间件在整个http处理流程的位置,将中间件大致分为3类:

  • Pre-Request 通常用来改写request的原始数据
  • Request/Response 大部分中间件都在这里,功能各异
  • Post-Response 全局异常处理,改写response数据等

connect安装

我的环境

  • win7 64bit
  • Nodejs v0.12.3
  • Npm 2.9.1

通过npm安装connect

E:\code\nodejs\connect-learning>npm install connect --save
connect@3.3.5 node_modules\connect
├── parseurl@1.3.0
├── utils-merge@1.0.0
├── debug@2.1.3 (ms@0.7.0)
└── finalhandler@0.3.4 (escape-html@1.0.1, on-finished@2.2.1)

Tip:如果你是在项目中,并且已经有package.json这个文件那么你可以加上--save选项让他在安装了这个模块之后就将它添加并保存到你的package.json文件中。

那么接下来,创建一个app.js,尝试做一个简单的http server。

var connect = require('connect');
var http = require('http');

var app = connect();

app.use(function (req, res) {
  res.end('Hello from Connect!\n');
});
http.createServer(app).listen(3000);

启动后在localhost:3000访问即可看到 最简单的http server

Tip:由于在之前的版本中加入了太多的中间件,而使connect变得相当臃肿,所以,在之后的版本中,很多东西都被拿出来单独当初一个模块了,在需要的时候可以自行通过app.use()来添加模块。

connect中间件介绍

  • body-parser - 以前是 bodyParser, json, 和 urlencoded. 你可能需要以下:
    • body
    • co-body
    • raw-body
  • compression - 压缩中间件,以前是 compress
  • connect-timeout - 超时中间件,以前是 timeout
  • cookie-parser - cookie解析中间件,以前是 cookieParser
  • cookie-session - cookieSession中间件,以前是 cookieSession
  • csurf - 跨源请求伪造中间件,以前是 csrf
  • errorhandler - 错误处理中间件,以前是 error-handler
  • express-session - session中间件,以前是 session
  • method-override - HTTP伪造中间件,以前是 method-override
  • morgan - 日志中间件,以前是 logger
  • response-time - 相应时间中间件,以前 response-time
  • serve-favicon - 网页favicon中间件,以前 favicon
  • serve-index - previously directory
  • serve-static - previously static
  • vhost - previously vhost

当前版本是v3.3.5 由于现在的版本中大部分中间件都被独立出来,所以知道他们的作用之后在需要时进行安装即可。

在此就不一一介绍了。大致的介绍和使用可以参照github,https://github.com/senchalabs/connect#middleware

收藏

暂无评论

登录后可以进行评论。没有账号?马上注册