koa 和 koa 2 最大的不同是koa 2 支持 async/await。
koa 通过结合 generators 和 promises 摆脱了 callback hell (回调地狱)。
koa 2 运用 async functions 来 get rid of callback hell.
Hello world
import Koa from 'koa';
var app = new Koa();
// uses async functions
app.use(async (ctx) => {
ctx.body = 'Hello world';
});
app.listen(3000);
如果你还不熟悉es6 先点击这里国内或这里国外 。
我在这里简单的介绍其中一条语法:
=> Arrow functions 箭头函数 (深入了解 =>)
(parameter) => {
console.log(parameter);
}
// 上面的代码同下面的代码
function(parameter) {
console.log(parameter);
}
Installing koa 2
node 版本<= 7.6的,必须用 transpiler(转译器),一般我们用 babel 来进行转译。在本文就不举例了,如果你的 node 版本过低 请 升级 >= 7.6。升级吧,都已经 V8 了。
正常情况下,建立 node 项目,我们首先要创建 ** package.json **。
npm init
然后 install koa 2:
npm install koa@2
How does koa 2 work?
Koa 用 stack(栈) 的方式 来执行 middleware(中间件)。
import Koa from 'koa';
var app = new Koa();
app.use(async (ctx, next) => {
// call the next middleware below
await next();
});
app.use(async (ctx, next) => {
// call the next middleware below
await next();
});
app.use(async (ctx) => {
// no more next();
// head back up the stack
ctx.body = 'Hello world';
});
app.listen(3000);
** await next(); ** 停止运行,运行下一个 middleware。
最后一个 middleware 没有调用next(),他会直接执行完且转向上面 middleware未执行的部分执行(如果在中间插入一个没有await next()的 middleware 也会令其直接进入 await的第二阶段,而不去执行剩下 middleware 的代码,所以在koa 2 里执行顺序很重要。
如下是项目根目录下 app.js 的代码
import Koa from 'koa';
var app = new Koa();
app.use(async (ctx, next) => {
// Called before calling the next middleware
console.log('going down');
await next();
// Called after calling the next middleware
console.log('going more up');
});
app.use(async (ctx, next) => {
// Called before calling the next middleware
console.log('going more down');
await next();
// Called after calling the next middleware
console.log('going up');
});
app.use(async (ctx) => {
// no more next();
// head back up the stack
ctx.body = 'Hello world';
});
app.listen(3000);
输出代码为:
$ node app.js
going down
going more down
going up
going more up
结束语
好了,以上就是我们初次接触 koa 2 的内容,随后会有深入内容推送。
感谢阅读~
网友评论