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

 

雲開發介紹

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

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

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

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

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

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

  •  

雲開發能力介紹

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

數據庫

雲開發提供了一個 JSON 數據庫,顧名思義,數據庫中的每條記錄都是一個 JSON 格式的對象。一個數據庫能夠有多個集合(至關於關係型數據中的表),集合可看作一個 JSON 數組,數組中的每一個對象就是一條記錄,記錄的格式是 JSON 對象。微信小程序

關係型數據庫和 JSON 數據庫的概念對應關係以下表:api

關係型 文檔型
數據庫 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

相關文章
相關標籤/搜索