作為h5游戲前端來說,對javascript肯定是很熟悉, 如果不熟悉,那就是被typescript害慘了.
js很強大,不僅僅體現了前端,在服務器端也是大顯神威 nodejs,mongodb.
恰巧微信小游戲雲開發,nodejs,mongodb正好能用得上。所以我覺得在一款單機游戲中試水雲開發,裝裝13.
萬事開頭難~~~
在開發之前我關心下面幾件事件
1:了解一些概念
2: 小游戲雲開發提供了什么?
3:開發環境及鑒權?
4:數據存儲調用?
5:怎樣調用?
概念:
access_token是公眾號的全局唯一接口調用憑據,公眾號調用各接口時都需使用access_token,開發者需要進行妥善保存。
openid 是用戶唯一標識,且沒有過期時間
獲取access_token(微信小游戲服務器端) 見 https://developers.weixin.qq.com/minigame/dev/api-backend/open-api/access-token/auth.getAccessToken.html
小游戲雲開發提供了 數據庫 存儲 雲函數
作為了一個小游戲開發碼農來說, 買服務器,配cdn等都是很麻煩的,小游戲雲開發環境都給提供了。
另外能滿足基本的需求,但是如果量大的話,花錢買容器嘛。如果數據不好的話,一毛錢的損失都沒有。
例子: 在線對戰五子棋: 雲開發 / 小游戲 https://tencentcloudbase.github.io/
開發環境及鑒權
傳統的鑒權:通過access_token
鑒權: 自帶鑒權光環,不必是傳統一的token形式
環境: 通過配置雲開發的根目錄(project.config.json中增加了字段 cloudfunctionRoot
用於指定存放雲函數的目錄)
雲函數寫好后,要上傳到雲開發環境
微信小游戲端 初始化雲環境后,wx.cloud.init({env:}), 就可以調用雲函數了.
獲取access_token
const cloud = require('wx-server-sdk') const rp = require('request-promise') cloud.init() // 雲函數入口函數 exports.main = async (event, context) => { const page = event.page const scene = event.scene //appid和秘鑰 const appid = '***', secret = '***'; const AccessToken_options = { method: 'GET', url: 'https://api.weixin.qq.com/cgi-bin/token', qs: { appid, secret, grant_type: 'client_credential' }, json: true }; //獲取AccessToken const resultValue = await rp(AccessToken_options); const token = resultValue.access_token; }
// 操作數據庫 const wxContext = cloud.getWXContext() let user = db.collection('user') let {total} = awaitnew Promise( (resolve, reject)=>{ user.where({ _openid: wxContext.OPENID }).count().then( res=>{ resolve(res) }) }) let data = { _openid: wxContext.OPENID, updateDate:new Date().getTime(), ...event, } if( total == 0 ){ data.createDate =new Date().getTime() return await user.add({ data }).then( res=>{ console.log('新增成功->', res) return res }).catch( err=>{ console.log('新增失敗',err) }) }else{ return await user.where({ _openid: wxContext.OPENID }).update({ data }).then( res=>{ console.log('更新成功->', res) return res }).catch( err=>{ console.log('更新失敗',err) }) }
數據庫增刪查改 https://www.jianshu.com/p/1fab91447721