初见 Koa 2

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 的内容,随后会有深入内容推送。

感谢阅读~

参考链接

Node.js Koa 2 Framework Tutorial

你可能感兴趣的:(初见 Koa 2)