Leancloud是國內有名的BaaS提供商,什麼是BaaS提供商呢?通俗點講就是給你提供增刪改查等後臺服務的API,你經過這些API就能夠將數據存儲在雲端數據庫中,而不須要關係服務器環境和裏面的處理邏輯,它提供的SDK有js、java、object-c、python等等。html
相似的BaaS提供商還有谷歌的firebase(www.firebase.com),但容易被牆不推薦。java
因此咱們能夠不須要本身搭建後臺環境就能夠實現小程序的後端須要了,這樣能夠極高的提升開發效率,縮短開發週期。node
Leancloud提供了完整的增刪改查API,只要根據文檔給到API進行調用就行,這個就不詳細描述了,請看文檔:https://leancloud.cn/docs/lea...python
下面地址詳情描述瞭如何實現受權登錄:
https://leancloud.cn/docs/wea...用戶系統ios
這裏所說的須要後臺的API調用,指相似:微信支付、二維碼生成、微信提現、微信發紅包、發送模版信息等等。
要實現這些功能必須使用 Leancloud的雲引擎中的雲函數。git
就是咱們能夠簡單的編寫一個能夠執行的node函數部署到leancloude的雲引擎中,直接使用leancloud的API就能夠直接執行你編寫的函數,不須要像之前編寫後端須要關心後端服務器環境那麼複雜,只須要執行一段指令將雲函數部署到雲端就能夠執行了。
詳情請看:https://leancloud.cn/docs/lea...github
https://leancloud.cn/docs/lea...
這裏有詳細說明,我就不贅述了。數據庫
咱們這裏介紹如何使用github部署:axios
註冊並建立leancloud應用:這個就不用說把,網站:https://leancloud.cn小程序
設置雲引擎
進入第一步建立的應用-雲引擎-設置,將git的地址填進去,這個代碼庫能夠fork個人代碼倉庫(https://github.com/jasondu/le...),而後複製Deploy Key,而後到本身fork的github設置頁面中的【Deploy keys】選項,添加一個Deploy Keys,Title隨便寫,Key就是剛纔複製的,而後點擊保存便可。
部署雲引擎
回到雲引擎-部署,「分支或版本號」填入master,點擊部署就能夠部署雲引擎了。
下面咱們經過「生成小程序二維碼」來說解如何使用雲函數開發小程序後臺
小程序二維碼:那個圓形的二維碼
普通二維碼
無限
有限
小程序二維碼、有限的https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN
小程序二維碼、無限的https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN
普通二維碼、有限的https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN
入參驗證
獲取accessToken
調用二維碼生成接口獲取二維碼二進制流
保存二維碼到leancloud
AV.Cloud.define('getwxacode', function (request, response) { const params = request.params; const requireParams = ['type']; let url; switch (params.type) { case 1: url = 'https://api.weixin.qq.com/wxa/getwxacode'; requireParams.push('path'); break; case 2: url = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit'; requireParams.push('page'); requireParams.push('scene'); break; case 3: url = 'https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode'; requireParams.push('path'); break; } // 1. 入參驗證 requireValidate(params, requireParams).then(params => { // 2. 獲取accessToken wxapi.getLatestToken((err, accessToken) => { // 3. 調用二維碼生成接口獲取二維碼二進制流 axios.post(url, params, { params: { access_token: accessToken.accessToken, dataType: 'JSON', }, responseType: 'arraybuffer' }).then((res) => { // 4. 保存二維碼到leancloud if (typeof res.data === 'undefined') { return response.error('生成二維碼失敗'); } else { const imageFile = new AV.File('file-qrcode.png', res.data); imageFile.save().then((res) => { return response.success(res); }, (error) => { return response.error(err); }); } }); }); }).catch(err => { return response.error(err); }); })
requireValidate: 驗證入參的方法
注意:這裏獲取二維碼必需要用axios的方式進行請求,不然返回的圖片信息會保存失敗
const AV = require('../libs/leancloud/av-weapp-min.js'); const paramsJson = { type: 1, path: '/pages/index/index' }; AV.Cloud.run('getwxacode', paramsJson).then(function (data) { // 調用成功,獲得生成二維碼的連接 console.log(data.url); }, function (err) { // 處理調用失敗 console.log(err); });