作為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
