背景:一直關注微信小程式的發展,看著小程式一步步完善,一步步壯大,心裡癢癢,也想做一個自己的微信小程式,但是苦於只會前端,不會服務端,所以想法一直被卡著。現在小程式有了雲開發,很輕鬆實現後端功能,寫後端跟寫前端沒啥區別,真的是前端小夥伴們的福音啊。
經過幾個晚上的熬夜奮戰,我的第一個微信小程式正式上線啦。
小程式名字:杭州地鐵通
二維碼:
歡迎小夥伴們體驗,歡迎吐槽。
現在還只是初版,功能還不完善,後面會繼續更新的。 閒話少說,進入正題。
小程式雲開發是什麼?
開發者可以使用雲開發開發微信小程式、小遊戲,無需搭建伺服器,即可使用雲端能力。(雲端說白了也就是服務端啦,說的那麼高大上,對新手朋友可不太友好。)
小程式·雲開發提供了三個基礎能力:資料庫、儲存和雲函式。
- 資料庫:json資料庫,就理解為往裡面存的是json,取出來的也是json。
- 儲存:就是把你的圖片、音訊和視訊之類的資原始檔,儲存到裡面,幫你生成連結,直接拿連結就可以用,就好像一個網盤一樣。
- 雲函式:這個雲函式,就是服務端的介面,你呼叫這個函式,也就是呼叫介面。雲函式可以在客戶端寫,也可以在雲開發控制檯寫,寫完之後同步一下,兩端就都有了。在雲函式裡,你可以進行計算,也可以運算元據庫,把想要的結果以同步或者非同步的方式返回給客戶端。
每個使用者最多可擁有兩套開發環境,兩套環境是互相獨立的,一般是建立一個test環境用於開發,一個release環境用於釋出。這裡有小坑,後面說。
雲開發怎麼用?
在建立工程時,選擇快速建立雲開發模板,直接就擁有了雲開發能力, 模板裡已經配置好了雲服務對接模組的路徑,如下圖:
在app.js裡配置當前的環境ID,配置完畢,就可以進行開發了。
1.建立並編寫雲函式:
右鍵雲函式模組資料夾->新建Node.js雲函式: 
比如,我建立了一個獲取使用者收藏列表的雲函式,函式功能就是從資料庫從讀取使用者收藏列表,並把結果返回給小程式。
注意:app.js裡雖然指定了當前環境,但這裡的程式碼是在雲端執行的,還是要重新指定讀的是哪個環境的資料庫。

上面是非同步查詢,並返回,所以用的是 await。用await的好處是,可以把非同步程式碼像同步一樣去寫,這在阮一峰的ES6入門裡有講。
2.雲函式上傳並部署
建立完雲函式後,還需要右鍵點選雲函式,進行上傳並部署,
注意:微信開發工具不支援批量上傳,每個雲函式都要單獨點選上傳,這裡有點坑。
上傳部署完後,就可以直接呼叫了,雲函式呼叫和介面返回處理,其中,引數是放在data物件裡的。
3.獲取使用者唯一身份標識:openId
以前沒有云服務時,開發者用自己的伺服器對接小程式,使用微信使用者id時,需要自己呼叫介面進行鑑權,來判斷使用者身份。而現在這些都已經被雲服務給做了,每次呼叫介面,微信會自動鑑權,而且每個介面都會自帶openId,使用起來非常方便。
雲函式裡的微信openId的獲取,和引數的獲取: 
到此,這些就是雲函式的使用過程,是不是很簡單,又很方便。
最後:上面說過,雲服務有兩個環境,兩個環境互相獨立,目前微信不支援環境間資料同步,那在test裡的一些資料,就要手動去同步到release環境,這個有點煩。
還有一點是:如果開發完要上線了,那要把環境從test切到release環境。切換環境時,需要把app.js裡雲服務初始化環境切換到release,雲函式裡如果有資料庫呼叫,也要指定資料環境。而且切換時,用的是環境ID,不是環境的名字,文件裡寫的是用名字,坑了我20分鐘。