Koa

Koa 中文文檔
Koa 官方文檔(英文)

介紹

Express

  • Express 是第一代最流行的web框架,對 Node.js 的 http 進行了封裝。
  • Express 的 API 很簡單,但是它是基于 ES5 的語法,要實現(xiàn)異步代碼,只有一個方法:回調(diào)。如果異步嵌套層次過多,代碼寫起來就非常難看。

Koa

  • Koa 是 Express 的下一代 web 框架,它是基于 Node. js 開發(fā)的web框架。
  • Koa 現(xiàn)在暫時有兩個版本:Koa 1.x 和 Koa 2.0。
  • Koa 1.0 使用Generator 實現(xiàn)異步,代碼看起來像同步的;Koa 2 完全使用 Promise 并配合 async (await) 來實現(xiàn)異步。

Koa 1

var koa = require('koa');
var app = koa();

app.use('/test', function *() {
    yield doReadFile1();
    var data = yield doReadFile2();
    this.body = data;
});

app.listen(3000);

Koa 2

const Koa = require('koa');
const app = new Koa();

app.use(async (ctx, next) => {
    await next();
    var data = await doReadFile();
    ctx.response.type = 'text/plain';
    ctx.response.body = data;
});

app.listen(3000);

Generator 函數(shù)和 async 函數(shù)

Generator 函數(shù)和 async 函數(shù)的最大區(qū)別是 Generator 函數(shù)不能自動執(zhí)行,需借助 co 函數(shù)庫(如下代碼),而 async 函數(shù)可以當作普通函數(shù)直接使用。

// Generator 函數(shù),用于依次讀取兩個文件
var gen = function* (){
  var f1 = yield readFile('/etc/fstab');
  var f2 = yield readFile('/etc/shells');
  console.log(f1.toString());
  console.log(f2.toString());
};

//Generator 函數(shù)只要傳入 co 函數(shù),就會自動執(zhí)行。
var co = require('co');
co(gen);

//co 函數(shù)返回一個 Promise 對象,因此可以用 then 方法添加回調(diào)函數(shù)。
co(gen).then(function (){
  console.log('Generator 函數(shù)執(zhí)行完成');
})

安裝

使用

應用

上下文

請求

響應

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

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

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