随着ES6的普及,async/await的语法受到更多JS开发者的青睐,Koa.js作为比较早支持使用该语法的Node框架越来越受到大家的喜爱,虽然Koa.js本身支持的功能很有限,但官方和社区提供了很多各种功能的中间件,本文精选了其中的十个,对于我们开发应用程序或者框架将会特别有用。

No.1 koa-router

路由是Web框架必不可少的基础功能,koa.js为了保持自身的精简,并没有像Express.js自带了路由功能,因此koa-router做了很好的补充,作为koa星数最多的中间件,koa-router提供了全面的路由功能,比如类似Express的app.get/post/put的写法,URL命名参数、路由命名、支持加载多个中间件、嵌套路由等。其他可选路由中间件:koa-route, koa-joi-router, koa-trie-router

No.2 koa-bodyparser

koa.js并没有内置Request Body的解析器,当我们需要解析请求体时需要加载额外的中间件,官方提供的koa-bodyparser是个很不错的选择,支持x-www-form-urlencoded, application/json等格式的请求体,但不支持form-data的请求体,需要借助 formidable 这个库,也可以直接使用 koa-bodykoa-better-body

No.3 koa-views

koa-views对需要进行视图模板渲染的应用是个不可缺少的中间件,支持ejs, nunjucks等众多模板引擎。

No.4 koa-static

Node.js除了处理动态请求,也可以用作类似Nginx的静态文件服务,在本地开发时特别方便,可用于加载前端文件或后端Fake数据,可结合 koa-compresskoa-mount 使用。

No.5 koa-session

HTTP是无状态协议,为了保持用户状态,我们一般使用Session会话,koa-session提供了这样的功能,既支持将会话信息存储在本地Cookie,也支持存储在如Redis, MongoDB这样的外部存储设备。

No.6 koa-jwt

随着网站前后端分离方案的流行,越来越多的网站从Session Base转为使用Token Base,JWT(Json Web Tokens)作为一个开放的标准被很多网站采用,koa-jwt这个中间件使用JWT认证HTTP请求。

No.7 koa-helmet

网络安全得到越来越多的重视,helmet 通过增加如Strict-Transport-Security, X-Frame-Options, X-Frame-Options等HTTP头提高Express应用程序的安全性,koa-helmet为koa程序提供了类似的功能,参考Node.js安全清单

No.8 koa-compress

当响应体比较大时,我们一般会启用类似Gzip的压缩技术减少传输内容,koa-compress提供了这样的功能,可根据需要进行灵活的配置。

No.9 koa-logger

koa-logger提供了输出请求日志的功能,包括请求的url、状态码、响应时间、响应体大小等信息,对于调试和跟踪应用程序特别有帮助,koa-bunyan-logger 提供了更丰富的功能。

No.10 koa-convert

对于比较老的使用Generate函数的koa中间件(< koa2),官方提供了一个灵活的工具可以将他们转为基于Promise的中间件供Koa2使用,同样也可以将新的基于Promise的中间件转为旧式的Generate中间件。

最新文章

  1. wampserver服务器无法启动(图标颜色不对)
  2. JQuery效果-淡入淡出、滑动、动画
  3. 【思维导图】Fiddler学习笔记
  4. Nginx详解(一)
  5. SPJS Upload for SharePoint: Custom upload page for uploading documents to various document libraries in a site collection
  6. CentOS下modelsim 10.2c install &amp; crack
  7. Linux nohup命令详解
  8. 创建Windows服务简单流程
  9. Python Unittest 自动化单元测试框架Demo
  10. 100个精选zencart扩展插件
  11. 假设我的朋友账号分别是v{1,2,3,4,5},且这五人想要共享一个目录,因此应该加入同一个群组,假设这个群组为vbird,且这五个账号的密码均为password.那该如何建置这五个账号?
  12. codeforces #447 894A QAQ 894B Ralph And His Magic Field 894C Marco and GCD Sequence
  13. 查看Python安装路径
  14. Redhat 6.3上安装libssh
  15. OGG-01091 Unable to open file &quot;./dirdat/cs001481&quot; (error 2, No such file or directory)
  16. mariadb开启远程访问
  17. ubuntu下搭建svn服务器
  18. iOS 7设计备忘单
  19. Centos7下ups监控apcupsd的使用
  20. 《计算机科学基础》学习笔记_Part 1 Computer and Data

热门文章

  1. auto和register关键字
  2. redis系列:哨兵
  3. 免费证书申请——Let&#39;s Encrypt的申请与应用(IIS,Tomcat)
  4. Java连接Hbase异常
  5. linux定制的补充
  6. [haut] 1281: 邪能炸弹 dp
  7. vue添加新属性不更新原因
  8. codevs3027(dp)
  9. cuda by example
  10. 防雪崩利器:熔断器 Hystrix 的原理与使用(转)