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
相關文章
相關標籤/搜索