前序:
对于node开发,之前一直用的是express,但是上网看了一下之后,发现koa已经在慢慢取代express了,而且开发团队是同一个,所以就在这里用上koa体验一把。
开发前:
这里,我们需要一个版本比较新的node去运行koa,在windows上可以用n,在linux上可以用yarn去管理node版本。
接下来就是安装koa:
npm install koa --save-dev
我们也可以创建一个手脚架
npm install koa-generator -g
生成项目,这里命名为HelloKoa2
koa2 HelloKoa2
进入文件并安装依赖
cd HelloKoa2
npm install
启动
npm run start
自建开发架
首先,我们必须准备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是接受参数,另外我们可以通过next()来进入下一个处理链
console.log(ctx);
await next();
})
app.use(async (ctx,next)=>{
//通过await进入处理
})
因为接口的调用是以不同路径名去分发,下面我们就需要引入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')返回的是函数:
const koaRouter=require('koa-router')();
// 创建一个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来获取参数
const bodyParser=require('koa-body');
app.use(bodyParser());
备注一下,koa1是用koa-bodyparser作为中间件的