微信小遊戲-開放資料域的配置
概念
開放資料域 是一個封閉、獨立的 JavaScript 作用域。開放資料域主要作用就是獲取使用者的關係鏈資料,並且展示關係鏈資料 具體使用方法在官方文件已經非常詳細了-》開放資料域本文只是做一個簡單整理 具體的展示關係鏈資料,如何繪製排行榜,請檢視另一篇文章
配置方法
1、新建開放資料域的程式碼目錄,以myOpenDataContext為例,在目錄下新建index.js作為開放資料的入口檔案 2、在game.json中新增配置項 openDataContext
{ "deviceOrientation": "portrait", "openDataContext": "src/myOpenDataContext" }
開放資料域限制
1、主域和開放資料域中的程式碼不能相互 require 2、wx.getUserCloudStorage、wx.getFriendCloudStorage() 和 wx.getGroupCloudStorage() 只能在 開放資料域 中呼叫。 3、wx.setUserCloudStorage() 和 wx.removeUserCloudStorage() 可以同時在 主域 和開放資料域中呼叫。4、開放資料中不能修改sharedCanvas的寬高,如有需要,請在上屏canvas修改sharedCanvas的寬高5、sharedCanvas只能被上屏canvas渲染 6、開放資料域不能向主域傳送訊息 7、sharedCanvas 不能呼叫 toDataURL 和 getContext。 8、開放資料域的所有 canvas 只支援 2d 渲染模式 9、開放資料域的 Image 只能使用本地或微信 CDN 的圖片,不能使用開發者自己伺服器上的圖片
主域限制
1、主域不能呼叫wx.getUserCloudStorage、wx.getFriendCloudStorage() 和 wx.getGroupCloudStorage() ,也就是說主域不能直接獲取使用者關係鏈資料,必須通過開放資料域獲取,再渲染到sharedCanvas上
主域和開放資料域的通訊
開放資料域不能向主域傳送訊息,主域可以呼叫開放資料域例項的postmassage()方法向開放資料域傳送訊息
// game.js let openDataContext = wx.getOpenDataContext() openDataContext.postMessage({ text: 'hello', year: (new Date()).getFullYear() })
在開放資料域中通過 wx.onMessage() 方法可以監聽從主域發來的訊息。
// src/myOpenDataContext/index.js
wx.onMessage(data => {
console.log(data)
/* {
text: 'hello',
year: 2018
} */
})
具體關於關係鏈資料的操作以及排行榜的繪製,請前往另一篇文章微信小遊戲-關係鏈資料的使用