Koa答疑,你见过同步的Node.js代码么?
Posted Node全栈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Koa答疑,你见过同步的Node.js代码么?相关的知识,希望对你有一定的参考价值。
为什么要升…
异步代码写烦了,promise也写烦了吧?
koa 1.x通过co,支持generator,你可以yield来写同步代码了
koa 2.x把co移到koa-convert里,把中间件改成的更现代的风格
common
generatorFunction
async/await
express升级koa,成本高吗?
除了koa自身的550行代码和异步流程外(如果熟悉promise/a+规范,成本更低),其他都可以按照express风格一样弄,路由,view,日志,static,生成器、上传等都是一模一样的
熟悉promise/a+规范,通吃
按照express风格一样弄,连express-generator都有对应的koa-generator
中间件机制一样,只是参数有差异
整体来说,我觉得成本比较低。但难在目前koa 2.x的资料非常少。我在写《更了不起的Node 4: 将下一代web框架Koa进行到底》一书的时候,也是非常痛苦的。
下面给出:express和koa比较
Feature | Koa | Express | Connect |
---|---|---|---|
Middleware Kernel | ✓ | ✓ | ✓ |
Routing | ✓ | ||
Templating | ✓ | ||
Sending Files | ✓ | ||
JSONP | ✓ |
这是一份很久以前的文档,目前来看也是对的,但是koa的生态已经很好了
Feature | Koa | Express | Connect |
---|---|---|---|
Middleware Kernel | ✓ | ✓ | ✓ |
Routing | ✓ koa-router | ✓ | |
Templating | ✓ koa-views | ✓ | |
Sending Files | ✓ koa-send | ✓ | |
JSONP | ✓ koa-safe-jsonp | ✓ |
该有的基本都有了,于是我仿着express-generator写了koa-generator
技术栈如下
cookies已经koa内置了,无需处理
generator是生成器的意思,用于生成项目骨架,express-generator就是一个比较好的例子,虽然比较精简,但结构清晰,足矣满足一帮性需求
鉴于很多人非常熟悉expressjs,我就假定大家也熟悉express-generator
express-generator提供的功能
生成项目骨架
约定目录结构(经典,精简,结构清晰)
支持css预处理器
koa-generator提供的功能
生成项目骨架
约定目录结构(和express-generator的结构一模一样)
支持css预处理器(暂未实行)
那是不是就一样简单了?
如果express还不太熟悉,还是先看express吧,毕竟资料比较多。如果有机会,有人带的话,一定要学Koa的,它是趋势,无论性能、语法、生态,都会有非常明显的优势。
sails不能用吗
express加个皮,和rails有点像而已
我对sails和meteor是一个态度,都是特定场景下的快速开发的好东西,就是对程序员要求比较高一点,如果有人能够hold住,其实用了,还是会提高效率的。
我总结了几点sails的缺点
1)sails不活跃
2)orm一堆坑
3)社区很差
如果没有rails背景和很好的express基础的话,没啥太大意义。