美文网首页
初见 Koa 2

初见 Koa 2

作者: 竹剑道 | 来源:发表于2017-07-12 18:05 被阅读281次

    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

          本文链接:https://www.haomeiwen.com/subject/yzqvhxtx.html