HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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:483647

评论

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

让GitHub低头认错的这份阿里内部绝密Java面试八股文手册有多强?

Java你猿哥

面试 ssm 面经 八股文 Java八股文

分析机构称AMD的PC市场空间正被蚕食,英特尔第12/13代酷睿处理器更具竞争力

科技之家

如何解决Mac苹果上运行VMware Fusion虚拟机提示“未找到文件”

理理

VM虚拟机 未找到文件 VMware Fusion虚拟机 苹果系统虚拟机

meta魔豹联盟系统开发源码(Demo)技术成熟

I8O28578624

分享:FactorJoin,一种新的连接查询基数估计框架

Java你猿哥

数据库 ssm

LED灯珠对LED显示屏8大影响

Dylan

LED显示屏 led显示屏厂家 户内led显示屏

安装Red Giant Maxon App时提示错误11025:无法连接到Red Giant服务

理理

红巨人特效插件 Red Giant 后期制作

火山引擎DataTester:构建增长闭环,3-5人即可搭建企业增长团队

字节跳动数据平台

AB testing实战 A/B测试 企业号 3 月 PK 榜

模拟经营类游戏:城市天际线Cities Skylines 怎么设置无限金币?

理理

城市天际线 Mac城市建造类游戏 Cities: Skylines

从入门到精通:C++ 学习路线指南,附详细学习计划

小万哥

c++ 程序员 后端 开发 学习路线

草图大师;SketchUp Pro 2022 mac中英双语

真大的脸盆

Mac 3D 建模软件 建模工具 3d建模

Android系统服务DropBoxManagerService详解与实践应用

vivo互联网技术

文件管理 Dropbox 文件上报

常见七大SMD器件布局基本要求,你掌握了几点?

华秋PCB

元器件 PCB PCB布局 布局 PCB设计

从智慧园区、智慧金融到智能制造,我们在华为云上实现了降本增效

华为云开发者联盟

云计算 华为云 华为云开发者联盟 企业号 3 月 PK 榜

瓴羊Quick BI、Qlik服务企业,助力企业数据智能化管理

对不起该用户已成仙‖

硬核!阿里P8自爆春招面试核心手册,Github上获赞65.7K

Java你猿哥

Java 面试 面经 八股文 春招‘

焱融科技助力海尔集团上云 加速“智能制造”进程

焱融科技

文件存储 分布式存储 容器存储 分布式文件存储 #高性能

SpringBoot整合RocketMQ,尝尝几大高级特性!

Java你猿哥

RocketMQ Spring Boot 后端 ssm Java工程师

马蹄链DAPP合约项目系统开发技术方案(成熟技术)

I8O28578624

深度解析微服务高并发:适配SpringMVC框架适配模块及实现原理

Java你猿哥

Java spring ssm Spring MVC Java工程师

修复“现在无法将USB设备连接到虚拟机,稍后尝试连接此USB设备 ”的方法

理理

usb pd18虚拟机 PD虚拟机不能联网

Icons8 for mac(logo图标素材大全)

理理

Icons8 logo图标 素材大全 Icons8 for mac

阿里高工珍藏版“亿级高并发系统设计手册(2023版)”面面俱到,太全了!

采菊东篱下

Java 并发

2023年新疆等级保护测评机构新名单看这里!

行云管家

等保 新疆 等级测评机构

一文看懂数据产品经理

小鲸数据

产品 #数据产品经理 #数据产品 #职业发展 #产品思维

量化合约技术系统开发(源码搭建)合约量化技术开发(Demo)

I8O28578624

成长计划知识赋能 | 第九期:渐进式深入理解OpenHarmony系统

OpenHarmony开发者

OpenHarmony

定档3月31日,博睿数据受邀参加DAMS数据智能管理峰会

博睿数据

智能运维 博睿数据 One 一体化智能可观测

RabbitMQ、RocketMQ、Kafka性能为何差距如此之大?

Java你猿哥

kafka RocketMQ RabbitMQ

过等保堡垒机选择云堡垒机可以吗?有推荐的吗?

行云管家

等保 等级保护 行云管家 过等保

ByteHouse MaterializedMySQL增强优化

字节跳动数据平台

数据库 云原生 Clickhouse 企业号 3 月 PK 榜

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