微信小程序又一爆炸功能上線-雲開發


 

雲開發介紹

開發者可以使用雲開發開發微信小程序、小游戲,無需搭建服務器,即可使用雲端能力。

雲開發為開發者提供完整的雲端支持,弱化后端和運維概念,無需搭建服務器,使用平台提供的 API 進行核心業務開發,即可實現快速上線和迭代,同時這一能力,同開發者已經使用的雲服務相互兼容,並不互斥。

目前提供三大基礎能力支持:

  • 雲函數:在雲端運行的代碼,微信私有協議天然鑒權,開發者只需編寫自身業務邏輯代碼

  • 數據庫:一個既可在小程序前端操作,也能在雲函數中讀寫的 JSON 數據庫

  • 存儲:在小程序前端直接上傳/下載雲端文件,在雲開發控制台可視化管理

  •  

雲開發能力介紹

小程序·雲開發提供了三個基礎能力:數據庫、存儲和雲函數,這一章節我們介紹下這幾個能力分別是什么,我們能用他來做什么。

數據庫

雲開發提供了一個 JSON 數據庫,顧名思義,數據庫中的每條記錄都是一個 JSON 格式的對象。一個數據庫可以有多個集合(相當於關系型數據中的表),集合可看做一個 JSON 數組,數組中的每個對象就是一條記錄,記錄的格式是 JSON 對象。

關系型數據庫和 JSON 數據庫的概念對應關系如下表:

關系型 文檔型
數據庫 database 數據庫 database
表 table 集合 collection
行 row 記錄 record / doc
列 column 字段 field

以下是一個示例的集合數據,假設我們有一個 books 集合存放了圖書記錄,其中有兩本書:

[
  {
    "_id": "Wzh76lk5_O_dt0vO", "title": "The Catcher in the Rye", "author": "J. D. Salinger", "characters": [ "Holden Caulfield", "Stradlater", "Mr. Antolini" ], "publishInfo": { "year": 1951, "country": "United States" } }, { "_id": "Wzia0lk5_O_dt0vR", "_openid": "ohl4L0Rnhq7vmmbT_DaNQa4ePaz0", "title": "The Lady of the Camellias", "author": "Alexandre Dumas fils", "characters": [ "Marguerite Gautier", "Armand Duval", "Prudence", "Count de Varville" ], "publishInfo": { "year": 1848, "country": "France" } } ]

存儲

雲開發提供了一塊存儲空間,提供了上傳文件到雲端、帶權限管理的雲端下載能力,開發者可以在小程序端和雲函數端通過 API 使用雲存儲功能。

在小程序端可以分別調用 wx.cloud.uploadFile 和 wx.cloud.downloadFile 完成上傳和下載雲文件操作。下面簡單的幾行代碼,即可實現在小程序內讓用戶選擇一張圖片,然后上傳到雲端管理的功能:

// 讓用戶選擇一張圖片 wx.chooseImage({ success: chooseResult => { // 將圖片上傳至雲存儲空間 wx.cloud.uploadFile({ // 指定上傳到的雲路徑 cloudPath: 'my-photo.png', // 指定要上傳的文件的小程序臨時文件路徑 filePath: chooseResult.tempFilePaths[0], // 成功回調 success: res => { console.log('上傳成功', res) }, }) }, }) 

上傳完成后可在控制台中看到剛上傳的圖片。

雲函數

雲函數是一段運行在雲端的代碼,無需管理服務器,在開發工具內編寫、一鍵上傳部署即可運行后端代碼。

小程序內提供了專門用於雲函數調用的 API。開發者可以在雲函數內獲取到每次調用的上下文(appidopenid 等),無需維護復雜的鑒權機制,即可獲取天然可信任的用戶登錄態(openid)。

比如我們如下定義一個雲函數,命名為 add ,功能是將傳入的兩個參數 a 和 b 相加:

// index.js 是入口文件,雲函數被調用時會執行該文件導出的 main 方法 // event 包含了調用端(小程序端)調用該函數時傳過來的參數,同時還包含了用戶登錄態 `openId` 和小程序 `appId` 信息 exports.main = (event, context) => { let { userInfo, a, b} = event let { openId, appId} = userInfo // 這里獲取到的 openId 和 appId 是可信的 let sum = a + b return { openId, appId, sum } } 

在開發者工具中上傳部署雲函數后,我們在小程序中可以這么調用:

wx.cloud.callFunction({
  // 需調用的雲函數名 name: 'add', // 傳給雲函數的參數 data: { a: 12 b: 19, }, // 成功回調 complete: console.log }) // 當然 promise 方式也是支持的 wx.cloud.callFunction({ name: 'add', data: { a: 12, b: 19 } }).then(console.log) 

如需在雲函數中操作數據庫、管理雲文件、調用其他雲函數等操作,可使用官方提供的 npm 包 wx-server-sdk 進行操作

 

為什么需要wx-server-sdk這個包呢,什么需要用呢?

其實這個庫是為在雲函數里可以操作數據、文件、調用其他雲函數,而雲函數是運行在雲端,可以理解為是node端,所以不能和客戶端使用一套api,所以微信提供了這么一套服務端的api,正好和客戶端api相對應了;

官方文檔請看:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM