美文网首页程序员
学习Node须知——中间件框架Connect

学习Node须知——中间件框架Connect

作者: ef3c855d1b6d | 来源:发表于2018-12-26 23:13 被阅读4次

主要通过学习《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 有一种用来处理错误的中间件变体,比常规中间件多了一个错误对象参数。

必须有四个参数:errreqresnext

错误处理中间件有两种工作机制

  • 用 Connect 的默认错误处理器(自动处理)
  • 自行处理

当 Connect 遇到错误时,回调过常规中间件,只去调用错误处理中间件。比如:

connect()
    .use(mw1) // 出错
    .use(mw2) // 跳过
    .use(mw3) // 跳过
    .use(errorHandler) // 执行 

参考

  1. 《Nodejs基础中间件Connect》
  2. 《Node.js实战(第2版)》

相关文章

  • 学习Node须知——中间件框架Connect

    主要通过学习《Node.js实战(第2版)》总结,推荐阅读 了解 Connect Connect 是一个 node...

  • Node.js生态:Connect框架

    Connect是一个中间件框架,负责管理、调度中间件,中间件的思想最早源于Ruby的Rack框架。 Connect...

  • koa相关介绍和操作

    koa 概述 node的一个轻量级框架,内置类似connect用来处理中间件,但是并没有捆绑任何中间件,采用的是洋...

  • NodeJS框架Express与Koa

    Express 是一个Node.js的基础框架,主要基于 Connect 中间件,并且自身封装了路由(需要配合bo...

  • 模板

    express: web 框架 express-session: session 中间件 connect-m...

  • Nodejs In Action (二)

    Connect Connect是一个框架, 它使用被称为中间件的模块化组件, 以可重用的方式实现Web程序中的逻辑...

  • NodeJS——Connect

    Connect是一个框架,它使用被称为中间件的模块化组件,以可重用的方式实现web程序的逻辑。在Connect中,...

  • Node.js 实战_4 Connect

    Connect Connect是一个框架,它使用被称为中间件的模块化组件,以可重用的方式实现Web程序中的逻辑。在...

  • connect

    Connect是一个框架,它使用被称为中间件的模块化组件,以可重用的方式实现Web程序中的逻辑。在Connect中...

  • 知识点总结

    Koa2中间件 koa(面向node.js的表达式HTTP中间件框架)、koa-router(路由中间件)、koa...

网友评论

    本文标题:学习Node须知——中间件框架Connect

    本文链接:https://www.haomeiwen.com/subject/rnhllqtx.html