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中的使用方法。

最近脾氣略微暴躁,懟天懟地懟空氣。仔細想一想仍是儘可能平穩心態纔是正道,碎覺。

相關文章
相關標籤/搜索