资讯专栏INFORMATION COLUMN

开始学习koa

KunMinX / 783人阅读

摘要:对已经跃跃欲试很久,恰遇最近正式发布,今天尝试着倒腾一番。所以自己对的学习算是从开始,由于文档资源还不完全,准备踩着前辈们的肩膀,慢慢入坑。常识入门级程序与大部分程序员同胞一样样的习惯,写一发慰藉自己孤寂的心灵。

对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 
`;
    });
});

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 
`;
    });
});

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

访问localhost:3000/index,最终结果:

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

勉强有点手感,洗簌,睡觉,同志们晚安。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/79413.html

相关文章

  • 从零组装新工具 - Koa2

    摘要:返回后,代表操作已完成,记录结束时间并输出。从零组装因为对的学习和使用,知道了自己对于后台框架的真实需求。所以这回决定不用之内的工具,而是自己从零开始,组装一个适合自己的框架。就是去和上,寻找一个一个的包并组装在一起了而已。 起因 作为一个前端,Node.js算是必备知识之一。同时因为自己需要做一些后台性的工作,或者完成一个小型应用。所以学习了Node的Express框架,用于辅助和加...

    sutaking 评论0 收藏0
  • 从Generator开始学习Koa

    摘要:需要说明的是,每次执行完函数之后,都会返回一个对象这个返回值有两个属性和,对象通过这个返回值来告诉外界函数的执行情况。函数的返回值变成这样可以发现的值变为了,因为函数已经执行完了。在规范中,新增了两个协议可迭代协议和迭代器协议。 Koa是最近比较火的一款基于Node的web开发框架。说他是一个框架,其实他更像是一个函数库,通过某种思想(或者说某种约定),将众多的中间件联系在一起,从而提...

    doodlewind 评论0 收藏0
  • 开始连载啦~每周2更共11堂iKcamp课|基于Koa2搭建Node.js实战项目教学(含视频)|

    摘要:玩转同时全面掌握潮流技术采用新一代的开发框架更小更富有表现力更健壮。融合多种常见的需求场景网络请求解析模板引擎静态资源日志记录错误请求处理。结合语句中转中间件控制权,解决回调地狱问题。注意分支中的目录为当节课程后的完整代码。 ??  与众不同的学习方式,为你打开新的编程视角 独特的『同步学习』方式 文案讲解+视频演示,文字可激发深层的思考、视频可还原实战操作过程。 云集一线大厂...

    B0B0 评论0 收藏0
  • 从零开始学习部署

    摘要:现在,我们已经有了云服务器了,接下来就是如何把我们能在本地跑起来的代码部署在服务器上。云服务器设置,是运维同学经常打交道的。讨论地址欢迎一起讨论,地址从零开始学习部署参考资料谁说前端不需要懂反向代理与负载均衡从入门到实践 前段时间看到了张云龙的文章 一个程序员的成长之路 - 剖析别人,总结自己,里面有这么一段话 栈外技术,是指栈内技术的上下游,领域外的相关专业知识,包括但不限于服务端技...

    jsdt 评论0 收藏0
  • 从零开始学习部署

    摘要:现在,我们已经有了云服务器了,接下来就是如何把我们能在本地跑起来的代码部署在服务器上。云服务器设置,是运维同学经常打交道的。讨论地址欢迎一起讨论,地址从零开始学习部署参考资料谁说前端不需要懂反向代理与负载均衡从入门到实践 前段时间看到了张云龙的文章 一个程序员的成长之路 - 剖析别人,总结自己,里面有这么一段话 栈外技术,是指栈内技术的上下游,领域外的相关专业知识,包括但不限于服务端技...

    gyl_coder 评论0 收藏0

发表评论

0条评论

KunMinX

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<