微信小程序云開發--環境共享

1、創建配置文件

// utils/cloudConfig.js
// 云開發環境配置// 當前小程序配置
const currentConfig = {env: "cloudbase-6goxxxxxxd6c75e0", // 當前小程序環境 IDappid: "wxdexxxxx5dbcf04", // 當前小程序 AppID
};// 共享云開發環境配置
const sharedConfig = {resourceAppid: "wx9xxxxxxxx142c", // 資源方小程序 AppIDresourceEnv: "xxve-0gxxxxx521f5", // 資源方環境 ID
};module.exports = {currentConfig,sharedConfig,
};

2、封裝請求(云函數為例)

提示:不會用云函數可看之前的文章:

// utils/cloudRequest.js
// 云函數請求封裝工具const app = getApp();/*** 調用共享云函數* @param {string} functionName - 云函數名稱* @param {object} data - 傳遞的數據* @returns {Promise} 返回云函數調用結果*/
async function callSharedFunction(functionName, data = {}) {try {// 等待共享云開發環境初始化完成,下一步展示具體內容await app.waitForSharedCloudReady();if (!app.globalData.sharedCloud) {throw new Error("共享云開發環境未初始化");}const result = await app.globalData.sharedCloud.callFunction({name: functionName,data: data,});console.log(`共享云函數 ${functionName} 調用成功:`, result);return result;} catch (error) {console.error(`共享云函數 ${functionName} 調用失敗:`, error);// 顯示錯誤提示wx.showToast({title: "獲取數據失敗",icon: "none",});throw error;}
}/*** 通用數據獲取方法* @param {object} data - 配置選項* @param {object} data.gather - 集合名稱,必填* @param {object} data.page - 頁碼,默認1* @param {object} data.pageSize - 每頁數量,默認20,pageSize和size二選一* @returns {Promise} 返回數據*/
async function getCloudFunctionData(data = {}) {try {const res = await callSharedFunction("云函數名", data);if (res && res.result) {return res.result;} else {// console.warn(`獲取 ${functionName} 數據為空或格式不正確:`, res.result);return {};}} catch (error) {// console.error(`獲取 ${functionName} 數據失敗:`, error);throw error;}
}module.exports = {callSharedFunction,getCloudFunctionData
};

提示:以下是本篇文章正文內容,下面案例可供參考

3、初始化云開發

// app.js
const { currentConfig, sharedConfig } = require("./utils/cloudConfig");App({onLaunch() {// 初始化當前小程序的云開發環境wx.cloud.init({env: currentConfig.env, // 當前小程序環境 IDappid: currentConfig.appid, // 當前小程序 AppIDtraceUser: true, // 開啟用戶追蹤(可選)});// 初始化共享云開發環境this.initSharedCloud();},// 初始化共享云開發環境async initSharedCloud() {try {// 創建共享云開發實例const sharedCloud = new wx.cloud.Cloud({resourceAppid: sharedConfig.resourceAppid, // 資源方小程序 AppIDresourceEnv: sharedConfig.resourceEnv, // 資源方環境 ID});// 初始化共享云開發環境await sharedCloud.init();// 將共享云開發實例保存到全局數據中this.globalData.sharedCloud = sharedCloud;this.globalData.sharedCloudReady = true; // 標記初始化完成console.log("共享云開發環境初始化成功");// 觸發初始化完成事件this.triggerSharedCloudReady();} catch (error) {console.error("共享云開發環境初始化失敗:", error);this.globalData.sharedCloudReady = false;}},// 觸發共享云開發環境初始化完成事件triggerSharedCloudReady() {if (this.globalData.sharedCloudReadyCallbacks &&this.globalData.sharedCloudReadyCallbacks.length > 0) {this.globalData.sharedCloudReadyCallbacks.forEach((callback) => {try {callback();} catch (error) {console.error("執行共享云開發環境就緒回調失敗:", error);}});this.globalData.sharedCloudReadyCallbacks = [];}},// 等待共享云開發環境初始化完成waitForSharedCloudReady() {return new Promise((resolve, reject) => {if (this.globalData.sharedCloudReady) {resolve();} else {// 添加回調到隊列if (!this.globalData.sharedCloudReadyCallbacks) {this.globalData.sharedCloudReadyCallbacks = [];}this.globalData.sharedCloudReadyCallbacks.push(resolve);// 設置超時setTimeout(() => {reject(new Error("共享云開發環境初始化超時"));}, 10000); // 10秒超時}});},globalData: {sharedCloud: null,sharedCloudReady: false, // 共享云開發環境是否初始化完成sharedCloudReadyCallbacks: [], // 等待初始化的回調隊列},
});

4、使用

// index.js
const { getCloudFunctionData } = require("../../utils/cloudRequest.js");Page({/*** 頁面的初始數據*/data: {},// 共享數據async getTopicList() {try {const res = await getCloudFunctionData({ gather: "你的集合名" });console.log(res);} catch (err) {console.log(err);}},/*** 生命周期函數--監聽頁面加載*/onLoad(options) {this.getTopicList();},
});

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/86876.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/86876.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/86876.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringBoot+ShardingSphere-分庫分表教程(一)

日常使用數據庫的時候,更多的時間是在關心業務功能的實現,為了盡快完成新版本的發布上線,通常在項目初期不太會去在意數據庫的壓力和性能問題。在服務上線一段時間之后,就會發現當初設計存在著很多的不足,這都是項目研…

INA226 電流計 功率計電路圖轉PCB制作

上次發布了TI的INA226電路圖,今天抽了點時間,把電路圖生成了PCB。 帖出來,不足之處,請兄弟們留言指正。 沒什么問題就可以去嘉立創白嫖了。^_^

Vcpkg 經典模式完整遷移方案

🚀 從零開始:高效使用 Vcpkg 安裝 Qt WebEngine(經典模式 緩存優化 性能釋放) 🧩 背景簡介 在使用 Vcpkg 安裝 Qt 系列庫時,特別是龐大的 qtwebengine 模塊,編譯量極大,耗時可達…

FPGA產品

FPGA產品 文章目錄 FPGA產品1. Xilinx公司FPGA產品2. Altera公司FPGA產品3. FPGA產品的工業等級簡介4. FPGA產品的速度等級簡介總結 1. Xilinx公司FPGA產品 Xilinx公司是FPGA芯片的發明者,因此是一家骨灰級的老牌FPGA公司,同時也是目前最大的可編程邏輯…

205-06-26 Python深度學習1——安裝Anaconda與PyTorch庫(Win11+WSL2+Ubuntu24.04版)

文章目錄 1 安裝 wsl1.1 開啟 Windows 支持1.2 安裝 wsl1.3 移動 wsl 至其他盤1.4 其他事項 2 安裝 Anaconda3 安裝 Python 環境3.1 創建 Conda 環境3.2 安裝 Pytorch 庫(gpu) 4 安裝 Pycharm4.1 Toolbox App 安裝4.2 安裝 Pycharm4.3 配置 Pycharm 5 測…

Redis 數據遷移同步:應對大 Key 同步挑戰

在企業級的數據同步和遷移場景中,Redis 憑借高性能和靈活的數據結構,常被用于緩存和高頻讀寫場景。隨著業務數據的積累,Redis 中不可避免會出現包含大量元素的“大 Key”,如包含幾十萬條數據的 List、Set 或 Hash 類型。在進行全量…

視頻關鍵幀提取

🎞? 視頻關鍵幀提取與特征分析指南 📌 抽幀數量建議 視頻時長推薦抽幀數原因短視頻(≤15秒)3~5 幀覆蓋不同場景即可中長視頻(1~3分鐘)5~10 幀內容跨度大長視頻&#xf…

協作機器人優化自動化工作流程,提升工作效率

無損檢測(NDT)是一種檢查方法,用于識別材料中的裂紋或缺陷,或者在不損壞材料的情況下確定材料的元素組成。Olympus擁有多種NDT設備,這些設備具有多種多樣的測量功能,允許最終用戶對各種行業中使用的金屬、塑料、陶瓷和復合材料進行…

復用對象Aspose.Words 中 DocumentBuilder 的狀態管理解析

doc manager.LoadDocument(filePath) builder.Document doc 是不是builder就自動清空重建了,不需要清理builder Aspose.Words 中 DocumentBuilder 的狀態管理解析 在您的代碼中,builder.Document doc 這行代碼不會自動清空或重建DocumentBuilder的狀態。Docume…

(LeetCode 面試經典 150 題 ) 134. 加油站 (貪心)

題目&#xff1a;134. 加油站 思路&#xff1a;貪心&#xff0c;時間復雜度0(n)。 當前點i來到下一個點i1,那么油的變化量是gas[i]-cost[i]。 先統計遍歷完所有點后&#xff0c;油的變化量sum。如果sum<0&#xff0c;說明不可能繞行一周&#xff1b;sum>0&#xff0c;說…

Java 線程池總結

一、寫在前面 參考阿里開發規約,創建線程池一般用ThreadPoolExecutor 在高并發程序中&#xff0c;頻繁創建與銷毀線程是一種極其低效且不可控的行為。為了解決這個問題&#xff0c;Java 提供了線程池&#xff08;ThreadPoolExecutor&#xff09;這一強大的并發框架。它不僅提…

【3.3】Pod詳解——容器探針部署第一個pod

文章目錄 容器探針小知識-控制平面Pod實戰聲明式模型&命令模式 部署第一個pod編寫pod清單文件kubectl命令將清單文件post到api-server驗證pod刪除pod 容器探針 上面已經講到容器狀態,那么這些容器的狀態是怎么檢測到的呢?實際上在pod中有三種探針&#xff0c;存活探針(li…

Insar 相位展開真實的數據集的生成與下載(隨機矩陣放大,zernike 仿真包裹相位)

1.真實的數據集下載: Delta-X: UAVSAR L1B Interferometric Products, MRD, Louisiana, 2021 | NASA Earthdata 注意下載的時候需要注冊登錄一下哦 2. 適用于 深度學習訓練的數據集 通過網盤分享的文件:InSAR-DLPU.rar 鏈接: https://pan.baidu.com/s/1CRWAuNYwCHP_iqCeIhf…

C++ 多線程深度解析:掌握并行編程的藝術與實踐

在現代軟件開發中&#xff0c;多線程&#xff08;multithreading&#xff09;已不再是可選項&#xff0c;而是提升應用程序性能、響應速度和資源利用率的核心技術。隨著多核處理器的普及&#xff0c;如何讓代碼有效地利用這些硬件資源&#xff0c;成為每個 C 開發者必須掌握的技…

(線性代數)矩陣的奇異值Singular Value

矩陣的奇異值是矩陣分析中一個非常重要的概念&#xff0c;尤其是在數值線性代數、數據降維&#xff08;如PCA&#xff09;、圖像處理等領域有著廣泛應用。奇異值分解&#xff08;SVD, Singular Value Decomposition&#xff09;是一種強大的工具&#xff0c;可以將任意形狀的矩…

數據結構復習4

第四章 串 一些面試題 12. 介紹一下KMP算法。★★★ KMP算法是一種高效的字符串匹配算法&#xff0c;用于在一個文本串中查找一個模式串的出現位置。KMP算法通過利用模式串自身的信息&#xff0c;在匹配過程中避免不必要的回溯&#xff0c;從而提高匹配效率。 KMP算法的核心思…

【八股消消樂】消息隊列優化—消息有序

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一個正在變禿、變強的文藝傾年。 &#x1f514;本專欄《八股消消樂》旨在記錄個人所背的八股文&#xff0c;包括Java/Go開發、Vue開發、系統架構、大模型開發、具身智能、機器學習、深度學習、力扣算法等相關知識點&#xff…

2D寫實交互數字人如何重塑服務體驗?

在數字化浪潮席卷全球的當下&#xff0c;人機交互模式正經歷著前所未有的變革。從早期的文本命令行界面&#xff0c;到圖形用戶界面&#xff08;GUI&#xff09;的普及&#xff0c;再到如今語音交互、手勢識別等多模態交互技術的興起&#xff0c;我們與機器之間的溝通方式愈發自…

CI/CD GitHub Actions配置流程

騰訊云服務器寶塔FinalShellgithup 1.在云服務器上創建SSH秘鑰對&#xff0c;下載秘鑰到本地 2.在服務器中綁定秘鑰對&#xff08;綁定后&#xff0c;服務器不能將不允許密碼登錄&#xff09;綁定前先關機服務器&#xff0c;綁定后再開啟服務器 3.FinalShell改為公鑰登錄&am…

液態交互效果網頁開發--源自鴻蒙5以及iOS26的靈感

首先先來看看最終展示效果 當鼠標靠近“開始探索”的按鈕的時候&#xff0c;按鈕放大并有微弱光效 鼠標靠近之前會給視窗添加一層接近背景的朦朧感&#xff0c;當鼠標放在視窗上朦朧感消失 技術不復雜&#xff0c;這個網頁主要是使用了以下關鍵技術&#xff1a; HTML5 語義化標…