nodejs中间件
来源:互联网 发布:网络音乐在线听歌曲 编辑:程序博客网 时间:2024/06/05 10:45
中间件使用的感悟
中间件主要是用于处理请求的模块化,每一个模块处理自己想要处理的请求,这个思想我觉得其实就像设计模式当中的责任链模式和代理模式,首先处理请求是链式的,每个中间件都会有一个use方法,在这个方法中接收一个返回函数
function(req,res,next)
这里依然有处理请求的req和res,但是在处理请求之后需要调用next方法传给下一个中间件,这里就像一个责任链模式。
下面给出演示代码
request-time.js
/** * Created by raid on 2016/11/7. *//** * 请求时间中间件 * * @param opts */module.exports = function (opts) { var time = opts.time || 100; return function (req, res, next) { var timer = setTimeout(function () { console.log('too long!', req.method, req.url); }, time); var end = res.end; res.end = function (chunk, encoding) { res.end = end; res.end(chunk, encoding); clearTimeout(timer); }; next(); }}
demo.js
/** * Created by raid on 2016/11/7. */var connect = require('connect') , time = require('./request-time');// var server = connect.createServer();var server = connect.createServer();/** * 记录请求情况 */server.use(connect.logger('dev'));/** * 实现时间中间件 */server.use(time({time : 500}));/** * 快速响应 */server.use(function (req, res, next) { if ('/a' == req.url) { res.writeHead(200); res.end('Fast!'); } else { next(); }});/** * 模拟触发中间件 */server.use(function (req, res, next) { if ('/b' == req.url) { setTimeout(function () { res.writeHead(200); res.end('Slow!'); }, 1000); console.log("visit /b"); } else { next(); }});server.listen(3000);
0 0
- nodejs中间件
- NODEJS中间件
- Nodejs基础中间件Connect
- Nodejs基础中间件Connect
- Nodejs基础中间件Connect
- Nodejs express之中间件
- Nodejs中间件Connect
- nodejs connect 中间件
- Nodejs-connect 中间件
- nodejs的中间件
- Nodejs基础中间件Connect
- nodejs中的中间件--Multer
- Nodejs基础中间件Connect
- Nodejs基础中间件Connect
- nodejs开发中间件morgan
- NodeJs express自定义中间件
- [nodejs][express]中间件
- nodejs中间件Connect(1)
- Android ThreadPoolUtils-线程池相关
- 谋定而后动
- spring boot 自学笔记(一) hello word
- 基于C++类模板的链表
- gdb调试core文件与程序
- nodejs中间件
- Ubuntu常见错误问题解决
- 大端小端判断
- 进程和线程、协程的区别
- 【CodeForces】233C - Cycles(贪心)
- IOS用CGContextRef画各种图形(文字、圆、直线、弧线、矩形、扇形、椭圆、三角形、圆角矩形、贝塞尔曲线、图片)
- 说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
- entity framework 事务
- perfect素数3274