Egg知識整理系列(一)

Egg知識整理系列(一)

Koa

Koa是由Express框架原班人馬打造的全新web框架,與Express風格相似,底層都是沿用同一套Http基礎庫,可是有幾項顯著差異:web

  • Middleware洋蔥圈模型:Koa中間件採用洋蔥圈模型,全部的請求通過中間件都會執行兩次,能夠很是方便的實現後置處理邏輯;
  • Context:與Express中只有Requese和Response不一樣,Koa增長了Context做爲上下文對象,能夠在請求中將相關字段掛載在Context上。
  • 異常處理:用戶能夠很方便的自定義錯誤處理中間件放在其餘中間件以前,就能夠捕獲到異步或同步代碼發生的錯誤。如:
async function onerror(ctx, next) {
        try {
            await next();
        } catch (err) {
            ctx.app.emit('error', err);
            ctx.body = 'server error';
            ctx.status = err.status || 500;
        }
    }
複製代碼

Egg繼承Koa

衆所周知,Koa框架是一個極簡框架擴展性很是強,而Egg在此基礎上作了加強。shell

擴展

在Egg框架中,能夠經過定義app/extend/{application,context,request,response}.js來擴展Koa框架中四個框架的原型,如在app/extend/context.js中定義以下代碼:app

module.exports = {
    get isXXX() {
        return xxx;
    }
}
複製代碼

在controller.js中,能夠利用剛纔的定義:框架

exports.handler = ctx => {
  ctx.body = ctx.isXXX ? 'is xxx' : 'is not xxx';
};
複製代碼

插件

Egg提供了更增強大的插件機制,一個插件能夠包含:異步

  • extend: 擴展基礎對象的上下文,提供各類工具類、屬性。
  • middleware: 增長一個或多箇中間件,提供請求的前置、後置處理邏輯。
  • config: 配置各個環境下插件自身的默認配置項。
相關文章
相關標籤/搜索