学习Node须知——中间件框架Connect
主要通过学习《Node.js实战(第2版)》总结,推荐阅读
理解 Connect
Connect 是一个 node 中间件框架。Express 就是基于 Connect 开发的。
假如把一个 HTTP 解决过程比作是污水解决,中间件就像是一层层的过滤网,过滤网有各自不同的作用。
安装
$ npm install connect
Demo
const app = require('connect')();// 传给 app.use 的函数就是一个中间件app.use((req, res, next) => { res.end('Hello, world!');});app.listen(3000);Connect 中间件
Connect 中间件就是 JavaScript 函数。函数一般有三个参数:
req(请求对象)res(响应对象)next(回调函数)
一个中间件完成自己的工作后,假如要执行后续的中间件,需要调用 next 回调函数。
作用
借助中间件 API,可以把少量小的功能组合到一起,实现复杂的解决逻辑。
如何组合中间件?
Connect 中的 use 方法就是用来组合中间件的。
const connect = require('connect');// 输出 HTTP 请求的方法和 URL 并调用 next() 执行后续中间件function logger(req, res, next) { console.log('%s %s', req.method, req.url); next();}// 响应 HTTP 的请求function hello(req, res, next) { res.setHeader('Content-Type', 'text/plain'); res.end('hello world');}// 按顺序组合中间件connect() .use(logger) .use(hello) .listen(3000);注意组合中间件的顺序很重要,假如某个中间件不调用 next() ,那么在它后面的中间件就不会被调用。
如何创立可配置的中间件?
普通的中间件写法没办法通过传参数来实现扩展性或者通用性,相当于写死了,自由度不高。
可配置的中间件写法一般这样:用一个函数返回另一个函数(闭包)。
// 基本结构function setup(options) { // 这里做中间件的初始化逻辑 ... return function(req, res, next) { // 中间件逻辑 ... }}// 使用方法。通过 options 可以传入少量配置参数const options = { ... };app.use(setup(options));比方一个可配置的中间件 logger.js
function setup(format) { const regexp = /:(\w+)/g; return function createLogger(req, res, next) { // 根据传入的参数提取响应的信息 const str = format.replace(regexp, (match, property) => { return req[property]; }); console.log(str); next(); }}module.exports = setup;中间件如何进行错误解决?
Connect 有一种用来解决错误的中间件变体,比常规中间件多了一个错误对象参数。
必需有四个参数:err 、req 、res 、next
错误解决中间件有两种工作机制:
- 用 Connect 的默认错误解决器(自动解决)
- 自行解决
当 Connect 遇到错误时,回调过常规中间件,只去调用错误解决中间件。比方:
connect() .use(mw1) // 出错 .use(mw2) // 跳过 .use(mw3) // 跳过 .use(errorHandler) // 执行 参考
- 《Nodejs基础中间件Connect》
- 《Node.js实战(第2版)》
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 学习Node须知——中间件框架Connect
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 学习Node须知——中间件框架Connect