egg学习笔记第十天:中间件

1、定义一个最简单地中间件

①app>middleware>auth.js,暴露一个方法,两个参数,option和app,返回异步方法。javascript

module.exports = (option, app) => {
  return async function auth(ctx, next) {
    // 实现中间件的功能
    console.log(new Date());
    // 继续向下匹配
    await next();
  };
};

②config>config.default.jsjava

config.middleware = ["auth"];

③而后访问不一样的url,发现控制台都会执行中间件中的方法。npm

上面就是一个最简单的中间件例子。json

2、中间件的传参

①config>config.default.jsapp

config.auth = {
    title: "this is auth middle"
  };

②app>middleware>auth.js,打印option得到参数。框架

3、路由中间件

什么是路由中间件呢?就说通常的中间件在咱们调用哪一个url的时候都会执行,可是路由中间件能够按需匹配对应须要的中间件,好比说访问登陆url须要执行登陆中间件,访问注册url须要执行注册中间件。koa

"use strict";

/**
 * @param {Egg.Application} app - egg application
 */
module.exports = app => {
  const { router, controller } = app;

  const login = app.middleware.login({ title: "我是登陆执行的中间件" });

  const register = app.middleware.register({ title: "我是注册执行的中间件" });

  router.get("/", controller.home.index);

  router.get("/login", login, controller.home.login);

  router.get("/register", register, controller.home.register);
};

依次访问登陆注册可得控制台打印结果:异步

4、框架默认中间件配置

对提交数据大小的限制,通常不用作配置,框架中有默认值。async

// 框架中间件的默认配置
 config.bodyParser = {
   jsonLimit: "10mb" // Default is 1mb
 };

5、eggjs使用koa的中间件(非规范的koa中间件)

在eggjs中能够很是容易的引入koa的中间件生态。jsonp

1、使用koa-jsonp中间件。

cnpm i koa-jsonp --save

jsonp的概念请移步:https://www.jianshu.com/p/3c67ac9997dc

①在middleware下新建jsonp.js 写入:

// 配置koa的jsonp中间件
module.exports = require("koa-jsonp");

②在config>config.default.js中配置jsonp中间件,使其生效。

2、使用koa-compress开启gzip压缩。

①啥是gzip压缩呢?

正常状况下,访问以下页面,可知:须要加载637B的资源。

开启gzip压缩能够减少资源的加载大小,减小加载时间。优化项目等。

②安装koa-compress

cnpm i koa-compress --save

②middleware下新建compress.js 键入:

// eggjs中使用koa-compress开启压缩
module.exports = require("koa-compress");

③config>config.default.js 配置compress中间件。使其生效。

④配置compress中间件参数。

config.compress = {
    threshold: 1024 // 阀值,当数据超过1kb的时候,能够压缩
  };

⑤由上能够当资源超过1kb可开启gzip压缩,则咱们在模板中多写入一些内容,先注释掉gzip压缩访问:

可知没开启gzip压缩以前是1.8kb。

开启gzip可得:

在访问下页面得362B,gzip。

以上都是标准koa中间件在eggjs中的使用方法。

最近脾气略微暴躁,怼天怼地怼空气。仔细想一想仍是尽可能平稳心态才是正道,碎觉。

相关文章
相关标签/搜索