①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中的使用方法。
最近脾氣略微暴躁,懟天懟地懟空氣。仔細想一想仍是儘可能平穩心態纔是正道,碎覺。