koa和egg

koa2

image.png

如上圖,每一個請求都會一層層穿過中間件,最終在某個中間件處結(jié)束(不再繼續(xù)調(diào)用下邊的中間件),然后一層層返回。
如果需要寫一個服務(wù),我們需要自己寫具體的中間件去處理邏輯,而在前邊可以使用中間件,幫助實(shí)現(xiàn)

const SESSION_Config = {
    key:'koa:sessssss',
    maxAge:86400000,
    overwrite: true, /** (boolean) can overwrite or not (default true) */
    httpOnly: true, /** (boolean) httpOnly or not (default true) */
    signed: true, /** (boolean) signed or not (default true) */
}
app.keys = ['mykoa'];

app.use(cors({credentials:true}));
app.use(session(SESSION_Config, app));
app.use(async(ctx,next)=>{                    //session 處理
  if(!ctx.session.islogin){
    ctx.session.islogin=false;
  }
  await next();
});

app.use(json());
app.use(logger());
app.use(bodyparser);
//如上代碼,我使用cors,session,json,logger,bodyparser
//這些中間件幫我現(xiàn)實(shí)了跨域,session,json化,日志,請求體解析。

app.use(index.routes(),index.allowedMethods());  //公共api
app.use(async(ctx,next)=>{  //登陸檢驗(yàn)
  if(ctx.session.islogin){
    await next();
  }else{
    ctx.body={state:-4,tip:"請登錄"}
  }
})
app.use(user.routes(),user.allowedMethods());
//以上我只需要實(shí)現(xiàn)路由中間具體邏輯處理即可

如果學(xué)過spring的,可能想到那么controller和service呢?對不起,沒有。
使用koa的話,controller及以后的需要自己實(shí)現(xiàn)?;蛘哒冶容^好的中間件。

Egg.js 為企業(yè)級框架和應(yīng)用而生

首先egg是在koa上的封裝。

那koa沒有controller,service,router,所以egg加入了這些,并且約定了文件目錄結(jié)構(gòu),等等,這樣的話,更利于工程化的開發(fā)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容