koa服务器搭建基础

以前我一直使用rails搭建网站。rails与koa的基本理念很类似,都是基于中间件提供一层层的服务。所不一样的是,rails有不少内置的中间件,这使得开发者只须要关注MVC模块以及页面路由。而Koa这相对灵活不少,除了nodejs提供的http模块服务,其它的中间件都须要本身添加。node

若是对于网站开发不熟练,每每会不知道该添加哪些中间件。这篇文章就结合流程图讲解一下开发网站大体须要的中间件。git

 
Screen Shot 2017-04-14 at 11.20.21.png

安全检查

检查request的header,只容许符合安全的请求经过。安全检查最流行的库是koa-helmet。能够经过koa-helmet作下面这些检查:github

  • clickjacking
  • 移除X-Powered-By
  • 限制只经过https
  • xss攻击过滤
  • 伪造证书攻击
    更多的检查你们能够查看koa-helmet的文档。

数据预处理

http模块并不会解析传过来的数据。像表格里的数据,文件,json,xml都须要手动处理。数据预处理模块就是对这些数据进行处理的过程。处理完以后,能够经过键值在ctx.request里读取这些数据。比较流行的数据预处理模块能够参见koa-bodyparsernpm

静态资源

某些资源能够直接经过静态资源,这样能够省去路由,控制器,等的开销。能够经过koa-static设置静态资源路径。当路径匹配时,能够直接找到静态资源。json

路由

根据URL寻找对应的控制器以及视图。比较常见的中间件有(koa-route)[https://www.npmjs.com/package/koa-route], (koa-router)[https://www.npmjs.com/package/koa-router]缓存

身份验证

进行身份验证,并提供简单的API来确认是否验证成功,log in以及log out。这个模块相对比较复杂,我也须要花更多时间来研究。用的比较多的有koa-passport, koa-jwt安全

业务逻辑与数据获取

这个模块是网站开发者主要投入精力的地方。其具体实现随网站的需求不一样而变化。服务器

视图

选择视图模版。常见的模版有pug(jade), handlebars, hbs等。详情请看koa-pug, [koa-handlebars](https://www.npmjs.com/package/koa-handlebars], koa-hbssession

缓存

经过设置etag来判断内容是否改变。若etag未变化,则返回304给客户端。不然返回带有内容的回复。可使用(koa-etag)[https://www.npmjs.com/package/koa-etag]与(koa-conditional-get)[https://www.npmjs.com/package/koa-conditional-get]来实现基于etag的缓存koa

压缩

将最终的输出打包。比较流行的打包库为koa-compress

其余中间件

  1. logger
    koa-logger在请求来临和返回时输出在控制台输出简单的信息。

  2. error
    koa-error能够对服务器抛出的异常进行捕捉,并设置模版进行渲染

  3. session
    koa-session在服务器端设置网站的session

参考资料

  1. koajs github wiki
相关文章
相关标签/搜索