背景:一直關注微信小程序的發(fā)展,看著小程序一步步完善,一步步壯大,心里癢癢,也想做一個自己的微信小程序,但是苦于只會前端,不會服務端,所以想法一直被卡著。現(xiàn)在小程序有了云開發(fā),很輕松實現(xiàn)后端功能,寫后端跟寫前端沒啥區(qū)別,真的是前端小伙伴們的福音啊。
經(jīng)過幾個晚上的熬夜奮戰(zhàn),我的第一個微信小程序正式上線啦。
小程序名字: 杭州地鐵通
二維碼:

歡迎小伙伴們體驗,歡迎吐槽。
現(xiàn)在還只是初版,功能還不完善,后面會繼續(xù)更新的。 閑話少說,進入正題。
開發(fā)者可以使用云開發(fā)開發(fā)微信小程序、小游戲,無需搭建服務器,即可使用云端能力。(云端說白了也就是服務端啦,說的那么高大上,對新手朋友可不太友好。)
小程序·云開發(fā)提供了三個基礎能力: 數(shù)據(jù)庫 、 存儲 和 云函數(shù) 。
每個用戶最多可擁有兩套開發(fā)環(huán)境,兩套環(huán)境是互相獨立的,一般是創(chuàng)建一個test環(huán)境用于開發(fā),一個release環(huán)境用于發(fā)布。這里有小坑,后面說。
在創(chuàng)建工程時,選擇快速創(chuàng)建云開發(fā)模板,直接就擁有了云開發(fā)能力, 模板里已經(jīng)配置好了云服務對接模塊的路徑,如下圖:

?
在app.js里配置當前的環(huán)境ID,配置完畢,就可以進行開發(fā)了。
右鍵云函數(shù)模塊文件夾->新建Node.js云函數(shù): ?

比如,我創(chuàng)建了一個獲取用戶收藏列表的云函數(shù),函數(shù)功能就是從數(shù)據(jù)庫從讀取用戶收藏列表,并把結果返回給小程序。
注意:app.js里雖然指定了當前環(huán)境,但這里的代碼是在云端運行的,還是要重新指定讀的是哪個環(huán)境的數(shù)據(jù)庫。

?
上面是異步查詢,并返回,所以用的是 await。用await的好處是,可以把異步代碼像同步一樣去寫,這在阮一峰的ES6入門里有講。
創(chuàng)建完云函數(shù)后,還需要右鍵點擊云函數(shù),進行上傳并部署,
注意:微信開發(fā)工具不支持批量上傳,每個云函數(shù)都要單獨點擊上傳,這里有點坑。
上傳部署完后,就可以直接調用了,云函數(shù)調用和接口返回處理,其中,參數(shù)是放在data對象里的。

以前沒有云服務時,開發(fā)者用自己的服務器對接小程序,使用微信用戶id時,需要自己調用接口進行鑒權,來判斷用戶身份。而現(xiàn)在這些都已經(jīng)被云服務給做了,每次調用接口,微信會自動鑒權,而且每個接口都會自帶openId,使用起來非常方便。
云函數(shù)里的微信openId的獲取,和參數(shù)的獲?。??

到此,這些就是云函數(shù)的使用過程,是不是很簡單,又很方便。
最后:上面說過,云服務有兩個環(huán)境,兩個環(huán)境互相獨立,目前微信不支持環(huán)境間數(shù)據(jù)同步,那在test里的一些數(shù)據(jù),就要手動去同步到release環(huán)境,這個有點煩。
還有一點是:如果開發(fā)完要上線了,那要把環(huán)境從test切到release環(huán)境。切換環(huán)境時,需要把app.js里云服務初始化環(huán)境切換到release,云函數(shù)里如果有數(shù)據(jù)庫調用,也要指定數(shù)據(jù)環(huán)境。而且切換時,用的是環(huán)境ID,不是環(huán)境的名字,文檔里寫的是用名字,坑了我20分鐘。