路由是Web框架必不可少的基础功能,koa.js为了保持自身的精简,并无像Express.js自带了路由功能,所以koa-router作了很好的补充,做为koa星数最多的中间件,koa-router提供了全面的路由功能,好比相似Express的app.get/post/put的写法,URL命名参数、路由命名、支持加载多个中间件、嵌套路由等。其余可选路由中间件:koa-route, koa-joi-router, koa-trie-router前端
koa.js并无内置Request Body的解析器,当咱们须要解析请求体时须要加载额外的中间件,官方提供的koa-bodyparser是个很不错的选择,支持x-www-form-urlencoded, application/json等格式的请求体,但不支持form-data的请求体,须要借助 formidable 这个库,也能够直接使用 koa-body 或 koa-better-bodyjson
koa-views对须要进行视图模板渲染的应用是个不可缺乏的中间件,支持ejs, nunjucks等众多模板引擎。后端
Node.js除了处理动态请求,也能够用做相似Nginx的静态文件服务,在本地开发时特别方便,可用于加载前端文件或后端Fake数据,可结合 koa-compress 和 koa-mount 使用。安全
HTTP是无状态协议,为了保持用户状态,咱们通常使用Session会话,koa-session提供了这样的功能,既支持将会话信息存储在本地Cookie,也支持存储在如Redis, MongoDB这样的外部存储设备。网络
随着网站先后端分离方案的流行,愈来愈多的网站从Session Base转为使用Token Base,JWT(Json Web Tokens)做为一个开放的标准被不少网站采用,koa-jwt这个中间件使用JWT认证HTTP请求。session
网络安全获得愈来愈多的重视,helmet 经过增长如Strict-Transport-Security, X-Frame-Options, X-Frame-Options等HTTP头提升Express应用程序的安全性,koa-helmet为koa程序提供了相似的功能,参考Node.js安全清单。app
当响应体比较大时,咱们通常会启用相似Gzip的压缩技术减小传输内容,koa-compress提供了这样的功能,可根据须要进行灵活的配置。框架
koa-logger提供了输出请求日志的功能,包括请求的url、状态码、响应时间、响应体大小等信息,对于调试和跟踪应用程序特别有帮助,koa-bunyan-logger 提供了更丰富的功能。前后端分离
对于比较老的使用Generate函数的koa中间件(< koa2),官方提供了一个灵活的工具能够将他们转为基于Promise的中间件供Koa2使用,一样也能够将新的基于Promise的中间件转为旧式的Generate中间件。koa