写点什么

Koa Web 框架发布 0.2.0 版本

  • 2014-01-27
  • 本文字数:1524 字

    阅读完需:约 5 分钟

基于 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 )关注我们,并与我们的编辑和其他读者朋友交流。

2014-01-27 02:483684

评论

发布
暂无评论
发现更多内容

smartproxy印度住宅IP代理,帮助您的海外业务打造网络无障碍桥梁

摘星星的猫

AWS CodeWhisperer 上手初体验安装与使用

宇宙之一粟

Python 代码编辑工具 CodeWhisperer 6 月 优质更文活动

【Netty】「NIO」(一)认识 ByteBuffer

sidiot

后端 Netty java‘ 6 月 优质更文活动

人脸面部表情识别技术的挑战和未来发展

来自四九城儿

几分钟上线一个应用,这个神器我爱了!

引迈信息

低代码 JNPF 办公神器

软件测试/测试开发丨学习笔记之Mark标记测试用例

测试人

程序员 软件测试 自动化测试 测试开发 测试用例

如何用Smartproxy住宅代理IP抢购潮牌鞋子?住宅代理抢购限量款式

摘星星的猫

华为云发布面向消费终端的企业云原生白皮书,开辟移动时代的云原生路径

脑极体

云原生

设计模式总结(二):结构型模式

Studying_swz

6 月 优质更文活动

java多线程总结

Studying_swz

6 月 优质更文活动

推动体系建设 助推融合发展|2023开放原子全球开源峰会软件物料清单(SBOM)分论坛即将启幕

开放原子开源基金会

开源 开放原子全球开源峰会 软件物料清单(SBOM)

window.performance(前端性能监控并进行上报)

不叫猫先生

Performance 6 月 优质更文活动

华为云FunctionGraph函数工作流—— “Serverless“遇见”AI,释放AI生产力

华为云PaaS服务小智

Serverless 华为云 A2M

快手 Flink 的稳定性和功能性扩展

Apache Flink

大数据 flink 实时计算

活动预告 | 中国数据库联盟(ACDU)中国行定档深圳,一起揭秘数据库前沿技术

墨天轮

MySQL 数据库 oracle postgresql opengauss

Web智慧化工三维可视化管理系统

2D3D前端可视化开发

三维可视化 工业组态 物联网系统 数字孪生技术 智慧化工

OpenYurt 即将亮相 EdgeX+OpenVINO 开发者生态大会

阿里巴巴云原生

阿里云 开源 云原生

自动驾驶≠速度与激情

白洞计划

自动驾驶

从 PMO 的视角,看如何从 0 到 1 搭建研发效能体系?

思码逸研发效能

研发效能

英特尔PowerVia技术率先实现芯片背面供电,突破互连瓶颈

E科讯

汇众智,奔涌向前赢未来 | 2023开放原子全球开源峰会 OpenAtom openEuler 分论坛即将启幕

开放原子开源基金会

开源 openEuler 开放原子全球开源峰会 开放原子

奇点云举办“数据进化论”数智科技大会,发布数据云七大场景

奇点云

业务场景 奇点云 数智科技大会

初步了解RNN, Seq2Seq, Attention注意力机制

Studying_swz

6 月 优质更文活动

软件测试/测试开发丨iOS App自动化测试

测试人

ios xcode 程序员 软件测试

系统稳定性与高可用保障

得物技术

架构 高可用 稳定性

2023-06-06:给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。 对位于 (row, col) 的每个结点而言, 其左右子结点分别位于 (row + 1, col -

福大大架构师每日一题

golang rust 福大大

C语言编程语法—文件读写

芯动大师

C语言 二进制 6 月 优质更文活动

最近几年,国内好多家实体企业都开始用上低代码了,它有什么好?

优秀

低代码 数字化

推动开源与商业共生共赢 | 2023开放原子全球开源峰会开源商业化创新发展分论坛即将启幕

开放原子开源基金会

开源 开源商业化 开放原子全球开源峰会 开放原子

以AI为灯,照亮医疗放射防护监管盲区

飞桨PaddlePaddle

人工智能 深度学习 百度飞桨

Koa Web框架发布0.2.0版本_Web框架_Burke Holland_InfoQ精选文章