背景:一直關注微信小程序的發展,看着小程序一步步完善,一步步壯大,內心癢癢,也想作一個本身的微信小程序,可是苦於只會前端,不會服務端,因此想法一直被卡着。如今小程序有了雲開發,很輕鬆實現後端功能,寫後端跟寫前端沒啥區別,真的是前端小夥伴們的福音啊。前端
通過幾個晚上的熬夜奮戰,個人第一個微信小程序正式上線啦。數據庫
小程序名字:杭州地鐵通json
二維碼: 小程序
歡迎小夥伴們體驗,歡迎吐槽。後端
如今還只是第一版,功能還不完善,後面會繼續更新的。 閒話少說,進入正題。微信小程序
開發者可使用雲開發開發微信小程序、小遊戲,無需搭建服務器,便可使用雲端能力。(雲端說白了也就是服務端啦,說的那麼高大上,對新手朋友可不太友好。)服務器
小程序·雲開發提供了三個基礎能力:數據庫、存儲和雲函數。微信
每一個用戶最多可擁有兩套開發環境,兩套環境是互相獨立的,通常是建立一個test環境用於開發,一個release環境用於發佈。這裏有小坑,後面說。微信開發
在建立工程時,選擇快速建立雲開發模板,直接就擁有了雲開發能力, 模板裏已經配置好了雲服務對接模塊的路徑,以下圖: app
在app.js裏配置當前的環境ID,配置完畢,就能夠進行開發了。
右鍵雲函數模塊文件夾->新建Node.js雲函數: 
好比,我建立了一個獲取用戶收藏列表的雲函數,函數功能就是從數據庫從讀取用戶收藏列表,並把結果返回給小程序。
注意:app.js裏雖然指定了當前環境,但這裏的代碼是在雲端運行的,仍是要從新指定讀的是哪一個環境的數據庫。

上面是異步查詢,並返回,因此用的是 await。用await的好處是,能夠把異步代碼像同步同樣去寫,這在阮一峯的ES6入門裏有講。
建立完雲函數後,還須要右鍵點擊雲函數,進行上傳並部署,
注意:微信開發工具不支持批量上傳,每一個雲函數都要單獨點擊上傳,這裏有點坑。
上傳部署完後,就能夠直接調用了,雲函數調用和接口返回處理,其中,參數是放在data對象裏的。
之前沒有云服務時,開發者用本身的服務器對接小程序,使用微信用戶id時,須要本身調用接口進行鑑權,來判斷用戶身份。而如今這些都已經被雲服務給作了,每次調用接口,微信會自動鑑權,並且每一個接口都會自帶openId,使用起來很是方便。
雲函數裏的微信openId的獲取,和參數的獲取: 
到此,這些就是雲函數的使用過程,是否是很簡單,又很方便。
最後:上面說過,雲服務有兩個環境,兩個環境互相獨立,目前微信不支持環境間數據同步,那在test裏的一些數據,就要手動去同步到release環境,這個有點煩。
還有一點是:若是開發完要上線了,那要把環境從test切到release環境。切換環境時,須要把app.js裏雲服務初始化環境切換到release,雲函數裏若是有數據庫調用,也要指定數據環境。並且切換時,用的是環境ID,不是環境的名字,文檔裏寫的是用名字,坑了我20分鐘。