最近寫了一個node項目,主要使用到的技術有:前端
koa2 // nodejs 框架 koa-router // koa路由 graphql // 查詢api typescript // 強類型語言 jwt // 受權 typeorm // typescript的一個orm mysql2 // 內容數據庫 mongodb // 日誌存儲數據庫 redis // 服務器緩存
項目結構:node
conf目錄(配置項目錄,包含db配置、服務啓動端口配置、服務啓動入口文件server.ts) release目錄(編譯後目錄) src(項目主要源碼目錄) controllers(控制器) core(核心擴展) database(db鏈接) entities(mysql/mongodb的數據模型) middlewares(koa中間件) models(其餘一些數據的模型) routes(路由) schema(graphql的schame) utils(輔助庫目錄) app.ts項目入口文件
該項目使用了koa的路由,能夠同時支持普通RESTful和graphql兩種類型apimysql
目前受權使用jwt模式,爲了登出,也是用了redis輔助保存用戶會話信息(醉了...)git
在graphql項目中,只須要後端定義好返回數據模型,前端按照本身須要的數據去查詢接口,返回無冗餘數據,很是簡潔方便。github
graphql定義及各類各樣的好處就很少說了,直接看實戰結果吧。redis
GraphQL示例sql
// 查詢 { count articles{ list{id,title} meta{page,page_size} } } // 結果 { "data": { "count": 3, "articles": { "list": [ { "id": "594459f050bcc2abbbf5116ed301b002", "title": "Laravel 5.6 是繼 5.5 以後 Laravel 官方發佈002" }, { "id": "594459f050bcc2abbbf5116ed301b003", "title": "Laravel 5.6 是繼 5.5 以後 Laravel 官方發佈003" }, ... ], "meta": { "page": 1, "total": 24 } } } }
前端異步請求截圖:mongodb
請求數據typescript
返回結果數據庫
從結果看,返回的數據徹底是按照本身的須要進行查詢返回的
項目地址:https://github.com/xpioneer/k...
目前只是第一版,還未完善整個工程項目,總體架構還須要調整,但能夠跑通整個流程了!
歡迎star項目,也歡迎指正~~