對 koajs 的學習已經持續一段時間,對於"用"這一層面基本掌握。學習以後,老是但願能實際的應用到項目之中。貿然給現有項目大換血是不現實的,姑且先擬一個小項目付諸實踐。node
在嘗試使用 koajs 時,我依舊採用嚴格的 MVC 模式。M 作爲數據模型層,主要負責業務數據的管理和操做,來源於數據庫操做或者api調用。V 作爲視圖層,主要負責站點前臺的展現。C 作爲業務控制層,主要負責對站點業務流程的處理。基於這樣的思路,首先創建起項目的基本目錄結構:git
+ configs(項目配置文件目錄) ++ build(項目編譯相關配置) * + controllers(項目業務控制代碼目錄) + kits(經常使用工具包) + middlewares(項目中間件) + models(業務數據對象,能夠是操做數據庫,能夠是來源於調用api) + public(靜態資源目錄) ++ src(項目靜態資源源文件) ++ publish(項目靜態資源發佈文件,發佈自動生成) + routers(路由配置文件目錄) + test(項目相關測試文件) + views(項目視圖目錄) ++ dev(開發視圖文件) ++ pro(發佈視圖文件,發佈自動生成) + app.js(項目入口)
注:項目目錄是讓寫程序和看程序的人能一眼瞭解項目結構,我且主觀的認爲這樣的結構是能讓看到的人一目瞭然github
對於以中間件爲一級公民的koajs,在使用中我主要使用如下幾個關鍵技術:redis
路由: koa-routers數據庫
視圖: koa-viewsapi
會話: koa-generic-session + koa-redis緩存
模版引擎: nunjunkssession
API請求: requestapp
日誌: bunyankoa
緩存: ioredis
注:條條大路通羅馬,所謂的技術選擇全然是我的的愛好
剔除業務相關的功能,我將此項目的架子抽了出來,命名爲koa-skeleton,意爲骨架,但願供你們參考一二,項目地址: koa-skeleton