①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
①config>config.default.jsapp
config.auth = { title: "this is auth middle" };
②app>middleware>auth.js,打印option得到参数。框架
什么是路由中间件呢?就说通常的中间件在咱们调用哪一个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); };
依次访问登陆注册可得控制台打印结果:异步
对提交数据大小的限制,通常不用作配置,框架中有默认值。async
// 框架中间件的默认配置 config.bodyParser = { jsonLimit: "10mb" // Default is 1mb };
在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中的使用方法。
最近脾气略微暴躁,怼天怼地怼空气。仔细想一想仍是尽可能平稳心态才是正道,碎觉。