微信小程序雲開發之雲函數

上篇文章中提到有關微信小程序雲開發中雲函數的運用,而今天我們就來通過這篇文章較爲深入地瞭解它。

開始介紹之前,請先確保已開通小程序的雲開發功能,以便能跟着本文一起定義和調用雲函數。具體開通方式詳見 → 微信官方文檔·小程序

一、什麼是雲函數?

雲函數 即在雲端(服務器端)運行的函數,它就相當於通常我們所熟知的後端提供的可供前端調用的接口,只不過這裏的“接口”是部署在小程序提供的雲服務器上,而且它也有自己獨特的調用方式,具體調用方法後面會講到。

更多雲函數相關內容詳見 → 微信官方文檔·小程序

二、如何定義雲函數?

1. 新增配置字段

在開始定義雲函數之前,首先你得告訴小程序你將在哪個目錄下定義你的雲函數:

//  在 project.config.json 文件中添加以下字段
{
   "cloudfunctionRoot": "cloudbase/"
}

這裏的cloudbase/就代表你的雲函數所在目錄,接下來我們所有的雲函數都要在這個目錄下定義。

2. 新建雲函數目錄

在新建雲函數目錄之前,需要先保證上面配置中的cloudbase目錄存在(若沒有須新建),然後再在cloudbase目錄下新建雲函數目錄,目錄名稱即爲雲函數名稱。

假設我接下來打算定義一個兩數相加的雲函數,上圖中add目錄即爲新創建的雲函數目錄,雲函數名稱就叫add

3. 定義雲函數

在雲函數目錄下新建index.js文件,然後就可以在該文件中定義你的雲函數了。

exports.main = async (event, context) => {
  return event.a + event.b;
}

雲函數有兩個形參:eventcontext,其中event對象中含有所有調用雲函數時所傳參數,此外還自帶一個userInfo屬性,而userInfo屬性下保存有小程序的appId和用戶的openIdcontext 對象包含了此處調用的調用信息和運行狀態,可以用它來了解服務運行的情況。

例如,我們可以直接通過如下雲函數獲取用戶的openId:

exports.main = async (event, context) => {
  return event.userInfo.openId;
}

有時候雲函數中可能需要調用其他依賴,這時我們就需要安裝依賴,比如最常用的wx-server-sdk

const cloud = require('wx-server-sdk');
cloud.init({
    env: cloud.DYNAMIC_CURRENT_ENV
});

4. 部署雲函數

右鍵點擊雲函數目錄,選擇 創建並部署 即可。

三、如何調用雲函數?

1. 小程序端內調用

小程序內調用調用雲函數有兩種方式:手動調用自動調用,這裏以調用上例定義的雲函數add爲例,簡單介紹下 手動調用 方式。

wx.cloud.callFunction({
  // 雲函數名稱
  name: 'add',
  // 傳給雲函數的參數
  data: {
    a: 1,
    b: 1
  },
  success: function(res) {
    console.log(res.result.sum);   // 2
  },
  fail: console.error
})

有關 自動調用 方式可以前往 微信小程序開發之訂閱消息 查看,這裏不再贅述。

2. 小程序端外調用

小程序內定義的雲函數,不僅小程序端內可調用,端外也能調用,只不過不能直接調用,需要通過服務端調用小程序提供的 HTTP API 觸發雲函數來實現間接調用。

具體端外調用雲函數方式詳見 → 微信官方文檔·小程序

四、uni-app 如何開發雲函數?

此處不介紹uni-app自身的 雲開發uniCloud中的雲函數,而是介紹如何在uni-app中創建微信小程序雲函數目錄。

其實方法非常簡單,只需把雲函數根目錄建在static目錄下即可。

然後再在manifest.json的源碼視圖中的mp-weixin字段下添加cloudfunctionRoot字段:


結束語

有了雲開發之後,開發小程序的前端工程師們就能輕鬆地同時解決前後端開發問題,而云函數又是雲開發中非常重要的一部分,故有此文。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章