跳到主要内容

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