BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Koa Web框架发布0.2.0版本

| 作者 Burke Holland 关注 0 他的粉丝 ,译者 夏雪 关注 0 他的粉丝 发布于 2014年1月28日. 估计阅读时间: 5 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

基于Koa的NodeJS web应用框架发布了0.2.0版本。Koa是广为流行的Express MVC平台的后续产品,但它在很大程度上依赖了ES6的新概念。项目领导TJ Holowaychuck说,Koa作为“我从Connect和Express中发现的一个机会,让我这一次做‘正确’的事。”

这个版本被人称为“短小精悍”,这个版本的标号是重要的暗示,它重申了团队要从0.1.0开始发布的构想,本版本针对Koa的未来版本和产品用途充实了一些API。

0.2.0版本变更内容

这个版本最大的更新实际上是koa-compose模块,它把请求在中间件操作前和操作后的内容都记录到标准输出(stdout)中,使开发人员可以调试这些发到中间件的请求。

一些附加的小变更包括:套接字错误路由,以避免节点层的套接字处理对节点服务器的冲击;重构函数,目前已经把它们共享到了Express和Koa的模块,使它们都能在框架中使用;比如“accepts”模块,它负责内容协商,基于HTTP应答头信息的值分辨请求带有的内容类型,使服务器能够响应带有不同内容的请求。

以生成器为基础

Koa把它自己称为“下一代生成器web框架”,它充分利用了co库,它们使用ECMAScript 6语言规范中的生成器创建用在节点上的无阻塞同步过程。Prior节点框架依靠回调函数和约定实现了某种程度的“栈处理”,这对于HTTP请求来说是必需的。

虽然实际上生成器是用来创建Harmony迭代器的“工厂”,但Koa却用它们把函数变成了同步操作。Koa的应用程序可以向中间件的各个层发送请求。每次调用中间件函数时必须先yield它的返回结果然后再继续执行。

var koa = require('koa'); 
var app = koa(); 
 
app.use(route.get('/', google)); 
 
function *people() { 
   // “get”异步的HTTP调用
   var result = yield get('http://www.google.com'); 
   // 在上面那句yield返回之前本句不会执行 
   this.body = result; 
}

没有中间件

Koa本身不包含中间件,这使它保持着轻量级的封装。Holowaychuk解释说:“为方便起见(不仅仅针对最终用户),我们本打算把许多中间件捆绑到Connect里,但从节点到整个生态系统都针对我们进行了非常快速的更新,这使它的维护更加简单。回首这几年,绝大多数人都觉得捆绑这些中间件会是个错误的决定”。Holowaychuk接着说,基于这种认识让我们决定不让Koa捆绑任何中间件,而是在单独的模块中提供它,为了方便可以捆绑这些模块。

koa-common模块捆绑了web应用通常所需的大多数中间件。开发人员可以通过NPM中把所有这些中间件添加到他们的Koa应用中。

$ npm install koa-common

Koa和Express的未来

Holowaychuk提到,除了一些偶尔出现的古怪需求,大家认为Koa已经彻底完成了。

Express的未来成了Koa的版本,用户“deif”对此表达了自己的忧虑

对此我有以下疑问:

  1. 请在FAQ上对Express的状态给出了官方的回答,但我猜你们不再会积极维护Express了,对吗?
  2. 假设现在把重点放到了Koa上,Express已经是著名的节点框架了,为什么还要改名字呢?
  3. 如果一名新的开发人员同时看到Express和Koa,他们能够马上知道哪个是现在的发展重点吗?

大体上我很奇怪为什么它不能称为Express 3.0(或者4.0)。

Holowaychuk解释了改名的原因:

从Express到Koa的发展过程有着非凡的意义,虽然他们看上去很相似,但从本质上说它们完全不同,所以我不想把它称为Express 4.0,我想我们应该给它起个新名字……有的人想要保留Express,我们非常愿意有更多对它感兴趣的人加入到这个团队中。

查看英文原文:Koa Web Framework 0.2.0 Release


感谢侯伯薇对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

现在刚出了Koa 0.3版本 by ireland Ken

现在刚出了Koa 0.3版本

更新到0.3版本了,期待出1.0版本 by ireland Ken

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT