开始学习koa

对koa已经跃跃欲试很久,恰遇koa2最近正式发布,今天尝试着倒腾一番。所以自己对koa的学习算是从2.x开始,由于文档资源还不完全,准备踩着前辈们的肩膀,慢慢入坑。

环境的搭建

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

  2. 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映入眼帘。

理解关键点

  1. (应用上下文)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
勉强有点手感,洗簌,睡觉,同志们晚安。

关键字:node.js, koa, ctx, const

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部