最先进修koa

对koa已摩拳擦掌良久,恰遇koa2近来正式宣布,本日尝试着捣腾一番。所以本身对koa的进修算是从2.x最先,因为文档资本还不完整,预备踩着先辈们的肩膀,逐步入坑。

环境的搭建

  • node运转环境,官方文档标注node v4.0.0及以上版本。

  • babel,在运用async/await编程时babel是必需的,然则本人未运用async/await,而是运用传统的promise,所以未尝试装置babel。

基本知识入门级顺序

与大部分顺序员同胞一样样的习气,写一发hello world抚慰本身孤寂的心灵。

const Koa = require('koa');
let app = new Koa();

app.use(ctx => {
    ctx.body = 'hello world';
});

app.listen(3000);

翻开浏览器,接见localhost:3000,亲热的hello world映入眼帘。

明白症结点

  • (运用上下文)context

援用官方诠释:

Koa Context 将 node 的 request 和 response 对象封装在一个零丁的对象内里,其为编> 写 web 运用和 API 供应了很多有效的要领。

很多 context 的接见器和要领为了便于接见和挪用,简朴的托付给他们的 ctx.request 和 ctx.response 所对应的等价要领, 比如说 ctx.type 和 ctx.length 代理了 response 对象中对应的要领,ctx.path 和 ctx.method 代理了 request 对象中对应的要领。

异步编程完成

koa1供应了generator体式格局,koa2引入async/await完成,而我独爱promise处理体式格局。

app.use((ctx, next) => {
    const start = new Date();
    return next().then(() => {
        const ms = new Date() - start;
        ctx.body += `1:${ctx.method} ${ctx.url} - ${ms}ms \n`;
    });
});

app.use((ctx, next) => {
    const start = new Date();
    return next().then(() => {
        const ms = new Date() - start;
        ctx.body += `2:${ctx.method} ${ctx.url} - ${ms}ms \n`;
    });
});

app.use((ctx, next) => {
    ctx.body = 'first exec \n';
});

接见localhost:3000/index,终究效果:

first exec
2:GET /index - 0ms
1:GET /index - 0ms

委曲有点手感,洗簌,睡觉,同志们晚安。

    原文作者:继林
    原文地址: https://segmentfault.com/a/1190000005099530
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞