前序:
對于node開發(fā),之前一直用的是express,但是上網看了一下之后,發(fā)現(xiàn)koa已經在慢慢取代express了,而且開發(fā)團隊是同一個,所以就在這里用上koa體驗一把。
開發(fā)前:
這里,我們需要一個版本比較新的node去運行koa,在windows上可以用n,在linux上可以用yarn去管理node版本。
接下來就是安裝koa:
npm install koa --save-dev
我們也可以創(chuàng)建一個手腳架
npm install koa-generator -g
生成項目,這里命名為HelloKoa2
koa2 HelloKoa2
進入文件并安裝依賴
cd HelloKoa2
npm install
啟動
npm run start
自建開發(fā)架
首先,我們必須準備es7的編譯工具,所以我們需要安裝babel-core和babel-preset-stage-0
npm install babel-sore babel-preset-stage-0 --save-dev
接下來我們需要新建一個start.js作為一個入口并提供編譯
var register = require('babel-core/register');
register({
presets:['stage-0']
})
require('./index.js')
接下來我們新建一個index.js作為接口入口
const Koa = require('koa');
const app = new Koa();
app.use(async (ctx,next) = > {
//這里ctx是接受參數(shù),另外我們可以通過next()來進入下一個處理鏈
console.log(ctx);
await next();
})
app.use(async (ctx,next)=>{
//通過await進入處理
})
因為接口的調用是以不同路徑名去分發(fā),下面我們就需要引入koa-router了
主要步驟:
const koaRouter=require('koa-router')();
app.use(koaRouter.routes());
koaRouter.get('/', async (ctx,next)=>{
console.log(ctx);
// ctx.response.body = 'Hello Koa2.0!';
});
總體代碼:
// 導入koa,和koa 1.x不同,在koa2中,我們導入的是一個class,因此用大寫的Koa表示:
const Koa = require('koa');
// 注意require('koa-router')返回的是函數(shù):
const koaRouter=require('koa-router')();
// 創(chuàng)建一個Koa對象表示web app本身:
const app = new Koa();
app.use(koaRouter.routes());
app.use(async (ctx, next) => {
await next();
});
// response
koaRouter.get('/app/:name', async (ctx,next)=>{
console.log(ctx.params.name);
// ctx.response.body = 'Hello Koa2.0!';
});
app.listen(3000);
這里標注一下,node版本不夠高的話ctx會拿不到值,之前用7.2.1版本就太低了
對于post請求,我們需要中間件koa-body來獲取參數(shù)
const bodyParser=require('koa-body');
app.use(bodyParser());
備注一下,koa1是用koa-bodyparser作為中間件的