背景:一直關(guān)注微信小程序的發(fā)展,看著小程序一步步完善,一步步壯大,心里癢癢,也想做一個(gè)自己的微信小程序,但是苦于只會(huì)前端,不會(huì)服務(wù)端,所以想法一直被卡著?,F(xiàn)在小程序有了云開發(fā),很輕松實(shí)現(xiàn)后端功能,寫后端跟寫前端沒啥區(qū)別,真的是前端小伙伴們的福音啊。
經(jīng)過幾個(gè)晚上的熬夜奮戰(zhàn),我的第一個(gè)微信小程序正式上線啦。
小程序名字: 杭州地鐵通
二維碼:
歡迎小伙伴們體驗(yàn),歡迎吐槽。
現(xiàn)在還只是初版,功能還不完善,后面會(huì)繼續(xù)更新的。 閑話少說,進(jìn)入正題。
開發(fā)者可以使用云開發(fā)開發(fā)微信小程序、小游戲,無需搭建服務(wù)器,即可使用云端能力。(云端說白了也就是服務(wù)端啦,說的那么高大上,對(duì)新手朋友可不太友好。)
小程序·云開發(fā)提供了三個(gè)基礎(chǔ)能力: 數(shù)據(jù)庫 、 存儲(chǔ) 和 云函數(shù) 。
每個(gè)用戶最多可擁有兩套開發(fā)環(huán)境,兩套環(huán)境是互相獨(dú)立的,一般是創(chuàng)建一個(gè)test環(huán)境用于開發(fā),一個(gè)release環(huán)境用于發(fā)布。這里有小坑,后面說。
在創(chuàng)建工程時(shí),選擇快速創(chuàng)建云開發(fā)模板,直接就擁有了云開發(fā)能力, 模板里已經(jīng)配置好了云服務(wù)對(duì)接模塊的路徑,如下圖:
?
在app.js里配置當(dāng)前的環(huán)境ID,配置完畢,就可以進(jìn)行開發(fā)了。
右鍵云函數(shù)模塊文件夾->新建Node.js云函數(shù): ?
比如,我創(chuàng)建了一個(gè)獲取用戶收藏列表的云函數(shù),函數(shù)功能就是從數(shù)據(jù)庫從讀取用戶收藏列表,并把結(jié)果返回給小程序。
注意:app.js里雖然指定了當(dāng)前環(huán)境,但這里的代碼是在云端運(yùn)行的,還是要重新指定讀的是哪個(gè)環(huán)境的數(shù)據(jù)庫。
?
上面是異步查詢,并返回,所以用的是 await。用await的好處是,可以把異步代碼像同步一樣去寫,這在阮一峰的ES6入門里有講。
創(chuàng)建完云函數(shù)后,還需要右鍵點(diǎn)擊云函數(shù),進(jìn)行上傳并部署,
注意:微信開發(fā)工具不支持批量上傳,每個(gè)云函數(shù)都要單獨(dú)點(diǎn)擊上傳,這里有點(diǎn)坑。
上傳部署完后,就可以直接調(diào)用了,云函數(shù)調(diào)用和接口返回處理,其中,參數(shù)是放在data對(duì)象里的。
以前沒有云服務(wù)時(shí),開發(fā)者用自己的服務(wù)器對(duì)接小程序,使用微信用戶id時(shí),需要自己調(diào)用接口進(jìn)行鑒權(quán),來判斷用戶身份。而現(xiàn)在這些都已經(jīng)被云服務(wù)給做了,每次調(diào)用接口,微信會(huì)自動(dòng)鑒權(quán),而且每個(gè)接口都會(huì)自帶openId,使用起來非常方便。
云函數(shù)里的微信openId的獲取,和參數(shù)的獲取: ?
到此,這些就是云函數(shù)的使用過程,是不是很簡單,又很方便。
最后:上面說過,云服務(wù)有兩個(gè)環(huán)境,兩個(gè)環(huán)境互相獨(dú)立,目前微信不支持環(huán)境間數(shù)據(jù)同步,那在test里的一些數(shù)據(jù),就要手動(dòng)去同步到release環(huán)境,這個(gè)有點(diǎn)煩。
還有一點(diǎn)是:如果開發(fā)完要上線了,那要把環(huán)境從test切到release環(huán)境。切換環(huán)境時(shí),需要把a(bǔ)pp.js里云服務(wù)初始化環(huán)境切換到release,云函數(shù)里如果有數(shù)據(jù)庫調(diào)用,也要指定數(shù)據(jù)環(huán)境。而且切換時(shí),用的是環(huán)境ID,不是環(huán)境的名字,文檔里寫的是用名字,坑了我20分鐘。
工作日 8:30-12:00 14:30-18:00
周六及部分節(jié)假日提供值班服務(wù)