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: 配置各个环境下插件自身的默认配置项。
相关文章
相关标签/搜索