上篇文章中,我們介紹了數據採集相關的知識,這篇文章中,我們來整理下nodejs開發後臺常用的庫,然後選擇hapi來進行restful API的開發,以及定時任務、RPC的使用。
nodejs主流框架介紹
我們先來看下目前nodejs主流的框架:
1. Express(43.4k)
對於一個已經在使用nodejs的開發人員來說,Express並不是一個新鮮事,它提供了對nodejs原始API的比較好的封裝,從而使開發者更加容易使用nodejs。
2. Meteor(41k)
Meteor也是一個很出色的框架,記得官網有一句話,“Ship more with less code”, 確實也是像這句話一樣,不管是服務器數據庫的訪問,業務邏輯實現,還是客戶端的展示,所有的流程都是開箱即用的。還有一個點應該是 “配置大於開發”的思想,很多東西都是可以直接通過配置來實現,不需要太多的代碼,這點我覺得也是這個框架很厲害的一個點。
3. Koa(25.8k)
Koa是express的原班人馬開發的,核心是ES6的generator,使用generator來實現中間件的流程控制,在Koa框架中就再不會看到複雜的callback了。框架本身非常小,只打包了一些必要的功能,但是它本身通過良好的模塊化組織,讓使用者可以按照自己的想法來實現一個擴展性非常好的應用。
4. sails(20.4k)
Sails在底層使用express來提供對http請求的處理,同時使用Socket.IO框架來處理websocket請求,也通過waterline框架實現了ORM功能,你的應該程序可以在不進行大的修改的前提下,就可以從一個後端數據庫,切換到另外後端數據庫(也可以是一個NoSQL數據庫)。
5. egg(12.4k)
egg是阿里的一個團隊,基於Koa開發的框架,奉行【約定優於配置】,按照一套統一的約定進行應用開發,插件機制也比較完善,也是很好用的。之前寫的微博詞雲的api就是用egg來寫的,http://zz.mcust.cn,這個網站也是egg來寫的。
6.hapi(11k)
Hapi在衆多的框架中並非一個老牌選手,然而他卻成功的在這當中創造了自己的一個生態圈。致力於完全的分離node HTTP服務器,路由以及業務邏輯,並更多的聚焦於如何儘可能的通過配置而非代碼來控制東西。
這次選擇Hapi的原因其實也很簡單,因爲之前沒用過。
使用Hapi
每一次學習一個東西,其實套路都是差不多的,我們先去官網看看。
這裏我們有很多的關鍵點,有更新信息,指南說明,api文檔,插件,版本號,最近更新時間,下載次數,源碼等等信息。看更新時間和下載次數看來,活躍人數還是比較多的,這些數據也能從某個維度上來對一個框架的做一些評判。
然後進入tutorials,照着裏面的教程動手實踐一下,學習如何創建http服務,如何使用路由,獲取url參數,cookies,日誌、驗證、視圖等等。
下面就正式進入小程序的接口開發中
創建項目,項目文件目錄大致如下:
- models代表數據模型,我在裏面定義了sequelize的模型,數據結構;
- controllers裏邊是大部分的業務邏輯;
- routers裏邊定義了路由,以及參數的驗證,處理路由的方法等;
- common裏面定義了公共的一些方法,一些加密的方法,生成uuid的方法等;
- config裏面是項目數據庫配置和插件配置;
- log是放日誌文件的地方。
然後我們這裏也用了很多的插件,和一些工具包等來幫助我們更快地完成任務。
這塊其實比較重要的一點是熱部署,開發環境中,使用了supervisor來部署;而生產環境我們是用了pm2來部署。
下面我們來看下hapi中如何使用定時任務
我們先看看hapi有沒有已經有的定時任務工具,我們去官網插件裏搜一下“cron”,
發現是有的,那我們就直接用hapi-cron這個庫即可。
需要先配置下定時任務:
然後注入到服務中即可。
上面的配置表示每天的6點、11點、16點、23點回去請求/spider_articles這個請求。對cron表達式不熟悉的同志們可以稍微補補這方面的知識。
然後這個接口裏是發送了三個請求,是我們上次部署好的爬蟲服務。
這樣我們就通過定時任務完成了定時去爬數據的工作。
別的接口都是比較正常的,需要操作下數據庫即可,還有一部分是需要rpc的,也是比較簡單好理解的,在這裏就不細談了。
本節關於hapi的部分到這裏就結束了。
NEXT
下一篇,我們會介紹小程序的開發,mpvue,以及小程序原始組件的使用,還有小程序一些重要的配置等。