1. 程式人生 > >微信小遊戲-開放資料域的配置

微信小遊戲-開放資料域的配置

概念

開放資料域 是一個封閉、獨立的 JavaScript 作用域。開放資料域主要作用就是獲取使用者的關係鏈資料,並且展示關係鏈資料 具體使用方法在官方文件已經非常詳細了-》開放資料域本文只是做一個簡單整理 具體的展示關係鏈資料,如何繪製排行榜,請檢視另一篇文章

配置方法

1、新建開放資料域的程式碼目錄,以myOpenDataContext為例,在目錄下新建index.js作為開放資料的入口檔案 2、在game.json中新增配置項 openDataContext

{
  "deviceOrientation": "portrait",
  "openDataContext": "src/myOpenDataContext"
}

clipboard.png

開放資料域限制

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
  } */
})

具體關於關係鏈資料的操作以及排行榜的繪製,請前往另一篇文章微信小遊戲-關係鏈資料的使用