使用Koa2进行Web开发(一)

这篇文章是我正在进行写作的《新时期的Node.js入门》的一部分使用Koa2框架进行讲述。本文为第一部分,讲述connect,express,Koa的历史渊源,重点关注了express与Koa的差异。Koa剥离了全部中间件,并且在2.0版本后引入了async/await函数,基本屏蔽了一切回调的细节,开发者可以认为异步回调已经“不存在了”
摘要由CSDN通过智能技术生成

这篇文章是我正在进行写作的《新时期的Node.js入门》的一部分

Connect,Express与Koa

为了更好地理解后面的内容,首先需要梳理一下Node中Web框架的发展历程
Connect
在connect官方网站提供的定义是,

Connect is a middleware layer for Node.js

开发者可以认为connect是一个Node中间件的脚手架。
Connect的源码结构十分简单,只有一个文件,去掉注释后的代码不超过两百行。
我们之所以首先提到connect,是因为connect首先在Node服务器编程中引入了middleware的概念,这种概念在当时(2010年)无疑是超前的,中间件概念的引入,将web开发变成了一个个独立的模块,使得社区的开发者们可以专注在中间件模块的开发上,
为后面express的诞生与繁荣打下了坚实的基础。
此外,connect还提出了一些关于中间件使用的规范,例如使用use方法加载中间件并且通过next方法调用中间件等

Express的诞生
Express框架是在Connect的基础上扩展而来的,它继承了connect的大部分思想,
Express的发展分为两个阶段,express3.x与express4.x
在3.x中,express依赖与connect的源码,并且内置了不少中间件,这种做法的缺点是如果内置的中间件更新了,那么开发者就不得不更新整个express
4.x中,express摆脱了对connect的依赖,并且摒弃了除了静态文件模块之外的所有中间件,只包含核心的路由处理(在express中,路由没有被当做中间件)以及其他的代码。
在过去的几年中,express取得了巨大的成功
MEAN(Mongo+Express+Angular+Node)架构成为了不少网站的开发首选,至今依旧非常流行。

Koa
但是Express依旧存在不少的缺点,对于中间件之间的异步流程控制没有提供良好的支持。
随着ES2015标准的落地,express的原班开发人法使用ES2015中的新特性重新打造了新的Web框架—Koa。
Koa的实现与connect更加相似,内部没有提供任何中间件,仅仅作为中间件的调用的脚手架。
Koa的发展同样存在两个阶段Koa1.x 和Koa2,两者之间的区别在于Koa2使用了ES2017中的新特性,这些特性已经在v7.6.0之后的Node版本中提供原生支持。


KOA入门

KOA 1.x 与KOA2
在web开发中,尽管http请求的处理是异步进行的,但我们还是希望能够顺序执行某些操作。
例如在收到http请求时,我们首先先将请求信息写入日志或者数据库,再返回对应的结果,这两个操作往往都是异步进行的,如果我们要顺序完成这两个任务,通常会使用嵌套回调的方式,或者借助一些三方模块进行异步流程控制

为了解决这个问题,Koa诞生了。
在KOA 1.x的版本中,由于当时node还没有完全实现对async/await的支持,因此使用了generator函数来作为异步处理的主要方式,此外,为了实现generator的自动执行,还使用了上一章介绍的co模块作为底层的处理逻辑—它们都是出自同一作者之手。
下面是koa1.x代码的例子

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

// logger

app.use(function *(next){
   
  var start = new 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值