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基础的话,没啥太大意义。


对于掌握express的同学. 如何学习koa更快

以上是关于Koa答疑,你见过同步的Node.js代码么?的主要内容,如果未能解决你的问题,请参考以下文章

基于 Koa平台Node.js开发的KoaHub.js获取/设置会话功能代码

基于 Koa平台Node.js开发的KoaHub.js连接打印机的代码

基于 Koa平台Node.js开发的KoaHub.js的静态服务器重写和索引代码

基于 Koa平台Node.js开发的KoaHub.js的输出json到页面代码

基于 Koa平台Node.js开发的KoaHub.js的跳过组件代码

KoaHub平台基于Node.js开发的Koa router路由插件代码信息详情