Connect
Connect是一个基于HTTP服务器的工具集,它提供了一种新的组织代码的方式来和请求、响应对象进行交互,即中间件。(需要注意的是本文中的connect版本为1.8.7,所以仅供学习参考)
中间件
基本形式:
var server = require('connect').createServer();
//第一个中间件
server.use(function (req, res, next) {
//相应的操作
.
.
.
//交给其他中间件处理
next();
});
//第二个中间件
server.use(function (req, res, next) {
//相应操作
.
.
.
//交给其他中间件处理
});
server.listen(3000);
需要注意:
要先在package.json中安装依赖
"dependencies": {
"connect": "1.8.7"
}
或者 npm install connect@1.8.7
static中间件
挂载
static允许任意一个URL匹配到文件系统中任意的一个目录
例如:
//使目录/images和url /my-images关联
server.use('/my-images', connect.static('/path/to/images'));
maxAge
static接收一个名为maxAge的选项,代表一个资源在客户端缓存的时间
例如:
//客户端的所有JS文件并不到一个文件夹中,并在文件名中加上修订好,进而永久缓存
server.use('/js', connect.static('/path/to/bundles', {maxAge: 10000000000000}))
hidden
static接收名为hidden的选项,如果该选项为true,则Connect会托管以点.开始的文件
例如:
server.use(conncet.static('/path/to/resources', {hidden: true}))
query中间件
在Node中,如果以查询字符串的形式传入服务器的数据,会以字符串的形式保存在(req.url)
通过query中间件,服务器可以直接获取这些数据
例如:
server.use(connect.query);
server.use(function (req, res) {
console.log(res.url.name)
//假设查询字符串为name=wjc
//输出wjc
})
logger中间件
logger用于客户端发送来的请求信息和服务端发送的响应信息打印在终端。
它提供的四种日志格式:
- default
- dev
- short
- tiny
例如:
var connect = require('connect'),
server = connect.createServer();
server.use(connect.logger('dev'));
bodyParser中间件
bodyParser中间件可以用于解析POST请求的消息体,即具备和qs模块一样的功能。
例如:
var connect = require('connect');
var server = connect(
connect.bodyParser(),
function (req, res, next) {
//假设请求的消息体为name=wjc
console.log(res.body.name)
//输出wjc
}
)
处理上传
bodyParser中间件还可以用于处理用户上传的文件。
例如:
var connect = require('connect');
var server = connect(
connect.bodyParser(),
function (req, res, next) {
//可以通过 req.cookies.kayvalue 访问cookie数据
}
)
cookieParser
cookieParser类似bodyParser为读取cookie提供了便捷
例如:
var server = connect(
connect.cookieParser(),
function (req, res, next) {
//可以通过 req.cookies.kayvalue 访问cookie数据
}
)
session会话
session同样地为服务端操作session提供了便捷
例如:
var connect = require('connect');
var server = connect(
connect.session(),
function (req, res, next) {
//可以通过 req.session.name = 'wjc' 来设置
}
)
如果你和我同样是一个young coder!
欢迎关注本人公众号Code center——春繁秋实,年年常茂。
