背景:一直關(guān)注微信小程序的發(fā)展,看著小程序一步步完善瓶堕,一步步壯大隘道,心里癢癢,也想做一個自己的微信小程序郎笆,但是苦于只會前端谭梗,不會服務(wù)端,所以想法一直被卡著⊥痱荆現(xiàn)在小程序有了云開發(fā)激捏,很輕松實(shí)現(xiàn)后端功能,寫后端跟寫前端沒啥區(qū)別凄吏,真的是前端小伙伴們的福音啊远舅。
經(jīng)過幾個晚上的熬夜奮戰(zhàn),我的第一個微信小程序正式上線啦痕钢。
小程序名字:杭州地鐵通
二維碼:
歡迎小伙伴們體驗(yàn)图柏,歡迎吐槽。
現(xiàn)在還只是初版任连,功能還不完善蚤吹,后面會繼續(xù)更新的。
閑話少說随抠,進(jìn)入正題裁着。
小程序云開發(fā)是什么?
開發(fā)者可以使用云開發(fā)開發(fā)微信小程序拱她、小游戲二驰,無需搭建服務(wù)器,即可使用云端能力秉沼。(云端說白了也就是服務(wù)端啦桶雀,說的那么高大上矿酵,對新手朋友可不太友好。)
小程序·云開發(fā)提供了三個基礎(chǔ)能力:數(shù)據(jù)庫背犯、存儲和云函數(shù)坏瘩。
- 數(shù)據(jù)庫:json數(shù)據(jù)庫盅抚,就理解為往里面存的是json漠魏,取出來的也是json。
- 存儲:就是把你的圖片妄均、音頻和視頻之類的資源文件柱锹,存儲到里面,幫你生成鏈接丰包,直接拿鏈接就可以用禁熏,就好像一個網(wǎng)盤一樣。
- 云函數(shù):這個云函數(shù)邑彪,就是服務(wù)端的接口瞧毙,你調(diào)用這個函數(shù),也就是調(diào)用接口寄症。云函數(shù)可以在客戶端寫宙彪,也可以在云開發(fā)控制臺寫,寫完之后同步一下有巧,兩端就都有了释漆。在云函數(shù)里,你可以進(jìn)行計(jì)算篮迎,也可以操作數(shù)據(jù)庫男图,把想要的結(jié)果以同步或者異步的方式返回給客戶端。
每個用戶最多可擁有兩套開發(fā)環(huán)境甜橱,兩套環(huán)境是互相獨(dú)立的逊笆,一般是創(chuàng)建一個test環(huán)境用于開發(fā),一個release環(huán)境用于發(fā)布岂傲。這里有小坑难裆,后面說。
云開發(fā)怎么用譬胎?
在創(chuàng)建工程時差牛,選擇快速創(chuàng)建云開發(fā)模板,直接就擁有了云開發(fā)能力堰乔,
模板里已經(jīng)配置好了云服務(wù)對接模塊的路徑偏化,如下圖:
在app.js里配置當(dāng)前的環(huán)境ID,配置完畢镐侯,就可以進(jìn)行開發(fā)了侦讨。
1.創(chuàng)建并編寫云函數(shù):
右鍵云函數(shù)模塊文件夾->新建Node.js云函數(shù):
比如驶冒,我創(chuàng)建了一個獲取用戶收藏列表的云函數(shù),函數(shù)功能就是從數(shù)據(jù)庫從讀取用戶收藏列表韵卤,并把結(jié)果返回給小程序骗污。
注意:app.js里雖然指定了當(dāng)前環(huán)境,但這里的代碼是在云端運(yùn)行的沈条,還是要重新指定讀的是哪個環(huán)境的數(shù)據(jù)庫需忿。
上面是異步查詢,并返回蜡歹,所以用的是 await屋厘。用await的好處是,可以把異步代碼像同步一樣去寫月而,這在阮一峰的ES6入門里有講汗洒。
2.云函數(shù)上傳并部署
創(chuàng)建完云函數(shù)后,還需要右鍵點(diǎn)擊云函數(shù)父款,進(jìn)行上傳并部署溢谤,
注意:微信開發(fā)工具不支持批量上傳,每個云函數(shù)都要單獨(dú)點(diǎn)擊上傳憨攒,這里有點(diǎn)坑世杀。
上傳部署完后,就可以直接調(diào)用了浓恶,云函數(shù)調(diào)用和接口返回處理玫坛,其中,參數(shù)是放在data對象里的包晰。
3.獲取用戶唯一身份標(biāo)識:openId
以前沒有云服務(wù)時湿镀,開發(fā)者用自己的服務(wù)器對接小程序,使用微信用戶id時伐憾,需要自己調(diào)用接口進(jìn)行鑒權(quán)勉痴,來判斷用戶身份。而現(xiàn)在這些都已經(jīng)被云服務(wù)給做了树肃,每次調(diào)用接口蒸矛,微信會自動鑒權(quán),而且每個接口都會自帶openId胸嘴,使用起來非常方便雏掠。
云函數(shù)里的微信openId的獲取,和參數(shù)的獲攘酉瘛:
到此乡话,這些就是云函數(shù)的使用過程,是不是很簡單耳奕,又很方便绑青。
最后:上面說過诬像,云服務(wù)有兩個環(huán)境,兩個環(huán)境互相獨(dú)立闸婴,目前微信不支持環(huán)境間數(shù)據(jù)同步坏挠,那在test里的一些數(shù)據(jù),就要手動去同步到release環(huán)境邪乍,這個有點(diǎn)煩降狠。
還有一點(diǎn)是:如果開發(fā)完要上線了,那要把環(huán)境從test切到release環(huán)境溺欧。切換環(huán)境時喊熟,需要把a(bǔ)pp.js里云服務(wù)初始化環(huán)境切換到release柏肪,云函數(shù)里如果有數(shù)據(jù)庫調(diào)用姐刁,也要指定數(shù)據(jù)環(huán)境。而且切換時烦味,用的是環(huán)境ID聂使,不是環(huán)境的名字,文檔里寫的是用名字谬俄,坑了我20分鐘柏靶。