(Ryan的Koa系列博客)0.Koa系列文章的博客写作计划

11 篇文章 0 订阅

前言

koa

用过node的人都知道express,这是一个将http组件封装了的node-web框架,这个框架由TJ大神开发。既然是大神,TJ之后又开发了一个基于ES6/ES7的新的node-web框架,这个框架的名字叫做Koa。因为TJ和express的高知名度,koa这个项目异常的火爆,同时,也因为是开发的初期,因此,代码量非常的小,这也给了我一个学习和分析代码的机会。另外,说个题外话,TJ本身是做UI设计师出身的,他可以开发出如此之多的框架,就是源于他自己对于技术的钻研和探索。世上无难事,只怕肯登攀。只要掌握了整个技术的核心和原理,再加以练习,熟能生巧,任何事都会迎刃而解。这个系列的文章将从源码层级对koa进行分析,力求从源码层级分析和讨论koa的整个实现原理和应用场景。

Koa

koa是轻量级的node-HTTP框架,力求让web开发和API使用更加的愉快。

koa的请求流以一种类似于堆的中间件的方式构建,允许你去执行向下流(类似encoder)任务然后再去过滤,操作响应的向上流(类似decoder),这个方式类似于洋葱结构。

注意:数据从下层向上传就是upstream(例如decoder就可以理解为upstream),数据从上层向下传就是downstream(例如encoder就可以理解为downstream)。

koa使用generators,也极大的提高了程序的可读性和健壮性,因为,在也不会像express那样写回调嵌套了。另外,只有所有http服务器最常用的方法,才直接集成在koa的550行基础代码中。这些方法包括内容协商工具?(content negotiation),不一致节点规范化工具?(normalization of node inconsistencies),重定向工具(redirection)和其他的一些必要的工具。

koa没有在内核中绑定任何中间件,但是,您有一堆社区中间件可以选择。

koa的安装

$ npm install koa

注意:koa是需要特定的node版本支持的,支持版本如下:

版本说明
v4+启动时需要增加 –harmony-generators或者–harmony标识
v0.12启动时需要增加 –harmony-generators或者–harmony标识

koa v2

koa2是koa的新版本,注意区别在于koa2采用了async/await这个方式。当然,日后我会开专门的文章重点分析讲解koa2的,此处只做简单说明。

开发koa2的原因是因为node还没有原生的支持async/await模式,因此,koa1没有官方版本的async/await模式,但是,可以通过koa2利用Babel的方式尝个鲜。

同时,基于generator的koa1中间件也可以通过使用koa-convert插件升级为koa2风格,一定要注意,只是koa2风格而已,因为,底层的node还没有支持呢。

例子

var koa = require('koa');
var app = koa();

// logger

app.use(function *(next){
  var start = new Date;
  yield next;
  var ms = new Date - start;
  console.log('%s %s - %s', this.method, this.url, ms);
});

// response

app.use(function *(){
  this.body = 'Hello World';
});

app.listen(3000);

文章构成

我计划分为三部分来写koa,第一部分就是结合koa讲解ECMAScript的基础知识,再加上自己的一些点评和知识点的补充。这里说个题外话,我对于金圣叹式的点评颇为赞赏,所以,本次,我也打算用这种方式来写第一部分的博客。第二部分,则是对koa源代码的分析,这部分属于纵向的深入研究。第三部分,是我对于koa的一些横向的比较,例如和express的比较,甚至会增加koa与前端框架如React、Vue.js的比较等,这部分属于横向的扩展。

文章写法

我计划每一篇文章,都是一个“单例”,怎么理解呢,也就是说,每一篇文章只有一个主题,只讲解一个问题,每个问题都非常小,并且可以独立成文,例如我介绍算法的时候,可能会每一种算法都写一篇文章,然后再写一篇概括性或者比较性的文章来横向比较。对于每一个问题点,我都会分几次去讲解,先讲概念,再纵向剖析,最后横向比较。因为,我感觉只有全方位的进行了分析,一个事物才能以一个完整的面貌呈现给我们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值