Node學習記錄: koa

官方文檔 koa
入門的話 天然是使用Koa 框架教程css

快速入門

安裝 Node.js

首先,檢查 Node 版本。Koa 必須使用 7.6 以上的版本。若是你的版本低於這個要求,就要先升級 Node。html

這裏咱們平時用的是6.11.0版本,須要換成8.1版本
推薦使用 nvm 來管理Node版本:前端

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
$ nvm install 8.1
$ nvm alias default 8.1

express vs koa

不一樣

  • koa和express在表現上的一點不一樣是採用ctx一個參數來調用中間件,而不是express的req, res。
  • 而後是在中間件鏈接的方式上有所不一樣。node

    • express的設計是串聯的,設計思路超級簡潔。
    • koa的某一箇中間件能夠自行選擇以後中間件的執行位置的。

舉例:
好比一個服務器處理時間/日誌的中間件的開發:
express:
request進來,記錄時間到request._startTime上。綁定一個函數到response的'end','finish'以及response.socket的'error','close'事件上。那個函數會用當前時間和startTime作差,算出運行時間。
此express版的計時器是express自帶的服務器日誌中間件morgan的實現。
koa2:git

const xTime = async(ctx,next) => {
  let start = new Date
  await next()
  ctx.set('X-Response-Time',(new Date)-start)+'ms')
}
  • 這是在功能上,在錯誤處理上的友好度也更高

不管是 Koa 還 Express 的框架,架構的方式雖不一樣,可是 HTTP 請求的流轉方式是近似的,對於業務層面的實現並沒有太大鴻溝github

安裝依賴

前端用koa模擬動態接口

實戰教程(6)使用fetch有一部分講解express

npm install koa koa-body koa-router --save-dev
var app = require('koa')();
var router = require('koa-router')();
var koaBody = require('koa-body')();

router.get('/', function *(next) {
    this.body = 'hello koa !'
});

router.get('/api', function *(next) {
    this.body = 'test data'
});
router.get('/api/1', function *(next) {
    this.body = 'test data 1'
});
router.get('/api/2', function *(next) {
    this.body = {
        a: 1,
        b: '123'
    }
});

router.post('/api/post', koaBody, function *(next) {
    console.log(this.request.body)
    this.body = JSON.stringify(this.request.body)
});

app.use(router.routes())
   .use(router.allowedMethods());

app.listen(3000);

參考

跨入Koa2.0,從Compose開始npm

相關文章
相關標籤/搜索