Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助我们快速而愉快地编写服务端应用程序。接下来将从四个方面展开koa的详细使用讲解。
一、koa-generator脚手架
安装
npm install -g koa-generator(全局下安装)
创建项目
koa2 project(koa2 -e koa2-learn,创建一个名为koa2-learn的项目)
运行项目
SET DEBUG=koa* & npm start koa2-learn
打开浏览器http://localhost:3000/
二、koa异步async await
首先我们需要知道异步的概念是什么。简单的说,就是想做一件事但不是现在执行,而是过一会做,一分钟后才知道结果。因为函数回调的时候,如果多层次嵌套,那简直是噩梦一般。
关于async和promise对象的区别,下面通过一个小栗子,让大家一目了然。
假如我有abc多个事情,对于promise来说,通过级联的方式,a.then.then….(此处省略n个then)去处理b和c的事情,而且必须手动去调用
对于async来说:
const a=await A
const b=await B
const c=await C
a的结果要等待a执行完,不会运行下面的语句,相当于用同步的写法完成异步的过程。
注意:ABC就是promise对象,await后面跟promise对象,await结果到来之前不会向下运行。有同学会问如果await后面不是跟对象呢?如果不是对象会自动转成对象。
理解async和await需要明白,当有多个await的时候,会依次向下执行。
三、koa2中间件
中间件是配合路由匹配完成做的一系列的操作,我们就可以把它叫做中间件。Koa中运用中间件可以实现以下一些功能:
1)添加应用:主要通过app.use()这个函数添加或是启动一些应用,如常见的一些第三方中间件的使用。
app.use(async (ctx, next) => {
console.log(new Date());
await next();
});
2)匹配路由:主要通过next()这个函数完成多级路由匹配。
router.get('/news', async(ctx,next) => {
console.log('这是路由');
await next();
});
3)错误处理:如果当前访问的路由一直向下匹配没有匹配到,可以通过中间件给出错误响应。
app.on('error', err => {
log.error('server error', err)
});
关于更多中间件的内容,可以查看文档API:https://koa.bootcss.com
或者https://github.com/koajs/koa/wiki
四、koa2路由
在Koa中我们需要安装对应的koa-router路由模块来实现:npm install –save koa-router
var Koa = require('koa');
var router = require('koa-router')();
var app = new Koa();
router.get('/', async (ctx) => {
ctx.body = "首页";
});
app.use(router.routes()).use(router.allowedMethods());
此外是Koa的路由执行顺序,Koa 选择了洋葱圈模型,即最先访问的路由里的next()后面的代码最后响应。
以上就是Koa的基础知识讲解,Koa的中文文档里有更详细的使用规则,进一步完善前往:https://github.com/demopark/koa-docs-Zh-CN仓库。