小程序開發(二):使用hapi快速開發接口

上篇文章中,我們介紹了數據採集相關的知識,這篇文章中,我們來整理下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,以及小程序原始組件的使用,還有小程序一些重要的配置等。​​​​

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章