《微信小程序開發從入門到實戰》學習四十五

4.4 云函數

云函數是開發者提前定義好的、保存在云端并且將在云端運行的JS函數。

開發者先定義好云函數,再使用微信開發工具將云函數上傳到云空間,在云開發控制臺中可看到已經上傳的云函數。

云函數運行在云端Node.js環境中。

小程序端通過wx.cloud.callFunction方法調用云函數,讓云函數在云端運行,云函數最終可以返回到小程序端。

云函數之間互相調用,需要使用服務端API的callFunction方法。

4.4.1?云函數簡介

以一個將兩個數字相加的函數作為第一個云函數作為示例。

首先,點擊pages文件夾,點擊右鍵,點擊“在資源管理器中顯示”,在打開頁面新建文件夾“cloudFunctions”

然后在project.config.json文件新增一個字段,指定cloudFunctions目錄為云函數在項目中的目錄。代碼如下:

{

??"cloudfunctionRoot":?"cloudFunctions/"

}

保存以后,cloudFunctions目錄圖標發生變化,表明這是一個云函數的目錄。

右擊cloudFunctions目錄,選擇“新建Node.js云函數”,并將該函數命名為add,

微信開發工具自動創建出同名目錄,以及目錄中兩個文件index.js和package.json。

index.js是add函數的入口文件。package.json是Node.js中的模塊描述文件,其內容是一個JSON對象,指定了模塊名字、版本、描述等信息。JSON對象的dependencies屬性指定了該模塊所依賴的其他模塊的名字和版本。在云函數可以用npm引入第三方依賴來幫助更快開發。

所有云函數中會默認引入wx-server-sdk的依賴,版本后為latest。在index.js文件中,第一行表示在云函數中引入這個依賴模塊的引用對象。其代碼如下:

const?cloud?=?require('wx-server-sdk') // cloud對象對應著小程序的wx.cloud對象

服務端API都封裝在cloud對象。

在服務端可以通過cloud.init方法實現初始化。代碼如下:

cloud.init()?// 使用云能力前需要先執行初始化方法

接下來觀察云函數的入口函數:

// 云函數入口函數

exports.main = async?(event,?context)?=>?{

// cloud function body

}

這是箭頭函數,async表示這是一個異步函數。event和context是函數的兩個參數,大括號是函數的內容。在函數前面加上exports.main=,表示這個函數是這個模塊的入口函數。

event指的是觸發云函數的事件對象,其中包含小程序端調用云函數時傳入的參數,而context對象則包含云函數的調用信息和運行狀態,可以用它了解服運行情況。

現在修改云函數,將傳入的a和b相加,并作為sum字段返回給調用端,代碼如下:

exports.main = async?(event,?context)?=>?{

const?c?=?event.a?+?event.b

??return?{

????sum: c

??}

}

保存后,需要將這個云函數部署到云端。在云函數魔力add上右擊,在右鍵菜單中,選擇“上傳并部署:云端安裝依賴?( 不上傳node_modules)?”,將云函數上傳并部署到線上環境中。

這時,在云開發控制臺中的云函數管理頁面可以看到剛剛上傳的云函數,如下圖所示:

部署完成后在小程序使用wx.cloud.callFunction方法調用該云函數。代碼如下:

?//? 回調風格

?wx.cloud.callFunction({

??????name:?'add',?//?云函數名稱

??????data?:?{

????????a: 1,

????????b:?2

??????},

??????success:?function(res){

????????console.log(res.result)?//?sum:?3

??????},

??????fail:?function(error){//?handle?error

??????}

????})

// Promise風格

????wx.cloud.callFunction({

??????name:?'add',?//?云函數名稱

??????data?:?{

????????a:?55,

????????b:?2

??????}

????}).then(res?=>?{

??????console.log(res.result)?//?sum:?

????}).catch(error?=>?{//?handle?error

????})

(實踐的時候發現,云函數的任何修改,都不是實時的,都需要點擊add上傳并部署,調用才能得到正確的結果)

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

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

相關文章

IP地址定位技術為網絡安全建設提供全新方案

隨著互聯網的普及和數字化進程的加速,網絡安全問題日益引人關注。網絡攻擊、數據泄露、欺詐行為等安全威脅層出不窮,對個人隱私、企業機密和社會穩定構成嚴重威脅。在這樣的背景下,IP地址定位技術應運而生,為網絡安全建設提供了一…

Python Selenium 自動登入1688

Python Selenium是一個用于自動化Web瀏覽器操作的庫。它提供了一組功能強大的工具和API,可以模擬用戶在瀏覽器中的行為,并執行各種任務,如點擊、輸入文本、提交表單等。 要使用Python Selenium登錄1688網站,需要進行以下步驟&…

iOS微信小程序虛擬支付解決方案

眾所周知,在IOS微信小程序不支持虛擬支付,一直是困擾IOS開發者、運營最頭疼的問題,主要原因是蘋果不允許IOS微信上架這類產品。導致微信小程序的開發者在IOS上都不能支付虛擬商品,虛擬商品包含了虛擬課程、會員、虛擬書等。 那么…

短視頻ai剪輯分發矩陣系統源碼3年技術團隊開發搭建打磨

如果您需要搭建這樣的系統,建議您尋求專業的技術支持,以確保系統的穩定性和安全性。 在搭建短視頻AI剪輯分發矩陣系統時,您需要考慮以下幾個方面: 1. 技術實現:您需要選擇適合您的需求和預算的技術棧,例如使…

肖sir__ 項目講解__項目數據

項目時間: 情況一:項目時間開始到上線的時間,這個時間一般比較長(一年,二年,三年) 情況二:項目的版本的時間或則是周期(1個月,2個月,3個月&…

機器人、智能小車常用的TT電機/310電機/370電機選型對比

在制作智能小車或小型玩具時,在電機選型上一些到各種模糊混淆的概念,以及各種錯綜復雜的電機參數,本文綜合對比幾種常用電機的參數及特性適應范圍,以便快速選型,注意不同生產廠家的電機參數規則會有較大差異。 普通TT…

論文閱讀:PointCLIP: Point Cloud Understanding by CLIP

CVPR2022 鏈接:https://arxiv.org/pdf/2112.02413.pdf 0、Abstract 最近,通過對比視覺語言預訓練(CLIP)的零鏡頭學習和少鏡頭學習在2D視覺識別方面表現出了鼓舞人心的表現,即學習在開放詞匯設置下將圖像與相應的文本匹配。然而,…

【ET8】2.ET8入門-ET框架解析

菜單欄相關:ENABLE_DLL選項 ET->ChangeDefine->ADD_ENABLE_DLL/REMOVE_ENABLE_DLL 一般在開發階段使用Editor時需要關閉ENABLE_DLL選項。該選項關閉時,修改腳本之后,會直接重新編譯所有的代碼,Editor在運行時會直接使用最…

免費網頁抓取工具大全【附下載和工具使用教程】

在當今信息爆炸的時代,獲取準確而豐富的數據對于企業決策和個人研究至關重要。而網頁抓取工具作為一種高效獲取互聯網數據的方式,正逐漸成為大家解決數據需求的得力助手。本文將深入探討網頁抓取工具的種類,并為大家提供簡單實用的頁面采集教…

(企業項目)SpringBoot3整合校驗框架validation

在Spring Boot項目中使用校驗框架validation可以讓我們更方便地實現數據校驗和錯誤提示。下面是Spring Boot集成校驗框架validation的步驟。 添加依賴 在項目的pom.xml文件中添加validation依賴&#xff1a; <dependency><groupId>org.springframework.boot</…

C# 實現Lru緩存

C# 實現Lru緩存 LRU 算法全稱是最近最少使用算法&#xff08;Least Recently Use&#xff09;&#xff0c;是一種簡單的緩存策略。 通常用在對象池等需要頻繁獲取但是又需要釋放不用的地方。 代碼實現的基本原理就是使用鏈表&#xff0c;當某個元素被訪問時&#xff08;Get或…

windows安裝protoc、protoc-gen-go、protoc-gen-go-grpc

文章目錄 一、 protoc二、protoc-gen-go三、protoc-gen-go-grpc 一、 protoc 1&#xff0c;下載&#xff1a;https://github.com/google/protobuf/releases 下載對應的protoc&#xff0c;注意選擇windows 2&#xff0c;下好之后解壓就行&#xff0c;然后把bin目錄加入到環境…

【異常】淺析異常體系及為什么一定會執行finally塊代碼

異常體系&#xff1a; &#xff08;1&#xff09;所有異常&#xff08;Exception&#xff09;、錯誤&#xff08;Error&#xff09;都繼承自異常中的基類&#xff1a;Throwable。而異常又可以分為檢查異常&#xff08;Checked Exception&#xff09;、非檢查異常&#xff08;Un…

msvcp100.dll丟失的常見原因/msvcp100.dll丟失的解決方法分享

在計算機使用過程中&#xff0c;我們經常會遇到一些錯誤提示&#xff0c;其中之一就是“msvcp100.dll丟失”。這個錯誤提示通常出現在運行某些程序或游戲時&#xff0c;給使用者帶來了很大的困擾。那么&#xff0c;究竟是什么原因導致了msvcp100.dll文件的丟失呢&#xff1f;本…

ubuntu22.04在opencv4的基礎上安裝opencv3

安裝opencv4 首先在ubuntu22.04上安裝opencv4&#xff0c;可以參考之前的博客ubuntu22.04安裝opencv4和opencv_contrib-CSDN博客 安裝opencv3 由于有使用opencv3的需求&#xff0c;所以需要繼續安裝opencv3 ; 安裝編譯 這里安裝的版本是opencv3.4.5&#xff0c;大致安裝思…

STM32F1之CAN介紹

目錄 ?編輯 1. CAN 是什么&#xff1f; 2. 總線拓撲圖 3. CAN 的特點 4. CAN 協議的基本概念 1. CAN 是什么&#xff1f; CAN 是 Controller Area Network 的縮寫&#xff08;以下稱為 CAN&#xff09;&#xff0c;是 ISO*1 國際標準化的串行通信協議。 在當前的汽車產…

javaWebssh學生系統myeclipse開發mysql數據庫MVC模式java編程計算機網頁設計

一、源碼特點 java ssh學生管理系統是一套完善的web設計系統&#xff08;系統采用ssh框架進行設計開發&#xff09;&#xff0c;對理解JSP java編程開發語言有幫助&#xff0c;系統具有完整的源代碼和數據庫&#xff0c;系統主要采用B/S模 式開發。開發環境為TOMCAT7.0,My…

前端開發中,Web Storage的存儲數據的方法localstorage和sessionStorage的使用及區別

在 Web瀏覽器中存儲數據以改善用戶體驗和提升Web應用程序性能是非常常見的。在大多數情況下&#xff0c;可供我們使用就是LocalStorage和SessionStorage。 本文中&#xff0c;我們將會從安全性和用戶體驗兩個方面對SessionStorage和LocalStorage進行評估。然后我們將討論如何根…

Linux驅動安裝遇到的問題(Kernel configuration is invalid)(Invalid module format)

Linux驅動編譯安裝遇到的問題&#xff08;Kernel configuration is invalid&#xff09;&#xff08;Invalid module format&#xff09; 前言1. Kernel configuration is invalid2. Invalid module format2.1 第一種情況&#xff1a;內核模塊編譯的環境與現在insmod想要運行的…

python:mplfinance 畫K線圖+布林線

pip install mplfinance ; python 安裝使用 TA-lib 安裝主要在 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 這個網站找到 TA_Lib-0.4.24-cp310-cp310-win_amd64.whl pip install /pypi/TA_Lib-0.4.24-cp310-cp310-win_amd64.whl 編寫 mpf_kline_boll.py 如下 # -*- cod…