小程式·雲開發 專案開發經驗分享

騰訊雲加社群發表於2018-09-06

歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~

本文由白宦成 發表於雲+社群專欄

近期,小程式開放了新的能力——「小程式·雲開發」,幫助開發者快速構建微信小程式的後端服務。我作為一名微信小程式的開發者,也在第一時間嘗試了小程式雲開發,並將我自己在開發過程中的經驗分享給大家。

小程式雲開發是什麼

簡單的來說,小程式雲開發是一款 Serverless 服務,他為開發者提供了「雲函式」、「雲資料庫」和「雲檔案儲存」,並且將這些能力封裝成特定的介面,以 wx.cloud.xxx 來進行呼叫。

小程式雲開發不是什麼

首先,小程式雲開發不是 PaaS ,它和我們所熟悉的 BAE、Google App Engine 不同,所提供的雲函式並不是完整的環境,而是以一個特定的事件為單位的。嚴格來說,它所提供的雲函式功能其實是 FaaS (Function as a Service),同型別的產品有 LeanCloud 的雲函式、 Bmob 的雲函式、AWS 的 Lambda、 Azure 的 Functions 和 Google Cloud Functions。

其次,小程式雲開發不是 LeanCloud 、 Bmob 之類的 BaaS 。不同於上述的兩款產品,他們提供了豐富的 API 介面,能夠實現各種各樣的功能,小程式·雲開發將介面進行深度的封裝,僅能在小程式、雲函式中通過 wx.cloud 和 wx-server-sdk 來呼叫(截止2018年8月24日)。因此,小程式雲開發 僅能應用在小程式中,無法在其他產品中應用(比如 App )

小程式雲開發適合什麼樣的場景?

所有的業務邏輯都僅僅需要在小程式端完成,無需過於複雜的管理邏輯(這是因為雲函式、雲資料庫無法在小程式以外的區域呼叫,因此無法實現強大的 Web 管理介面)

小程式雲開發的優勢

1. 微信登入邏輯簡單

小程式雲開發可以自動實現使用者登入的校驗,開發者無需再次校驗使用者身份,直接通過雲函式的 event.userInfo.openId 即可獲取到使用者資訊。直接呼叫資料庫 、檔案儲存 API 時,也會自動關聯到使用者對應的 openId

img

如果使用者授權小程式獲取暱稱等資訊,這些資訊也會自動出現在小程式雲開發的管理控制檯中的使用者登入部分。不需要開發者手動上傳。

2. 免費

目前小程式雲開發提供了免費 1GB 的資料庫儲存和 免費 5 GB 的檔案儲存,這個儲存量並不是很大,但是對於一些個人開發者來說,還是綽綽有餘的,開發者可以使用這些容量來快速開發自己的小程式。

img

3. 簡單

小程式雲開發的呼叫非常的簡單,你只需要瞭解 JavaScript 和一些簡單的非同步的知識 (promise),就可以完成小程式雲開發的內容。

4. 無侵入

小程式雲開發本身是在小程式的基礎庫層面的封裝,你無需再引入其他庫就可以使用。

同樣的,你也可以在原有的應用程式中,將一部分功能遷移到小程式雲開發中。

小程式開發過程中遇到的一些坑

1. 非同步請求需要通過 Promise 來處理

在雲函式中,我們大多會實現一些在小程式中無法實現,或受域名限制的請求介面,這時我們不能使用傳統的 Callback 方法來進行請求,因為傳統的 callback 方法執行完成後,雲函式早已將資料返回給客戶端,我們需要使用 Promise 來處理。

比如,下面的程式碼是我請求豆瓣 API 的程式碼。

var rp = require('request-promise')

exports.main = (event, context) => {
  var res = rp('https://api.douban.com/v2/book/isbn/'+ event.isbn).then( html => {
    return html;
  }).catch( err => {
    console.log(err);
  })
  return res
}
複製程式碼

上述程式碼出自 Github 專案 WXCloud-bookcase

2. 許可權結構比較簡單

img

小程式雲開發提供的資料庫許可權非常簡單,僅有四種。

  • 僅建立者可寫,所有人可讀:資料只有建立者可寫、所有人可讀;比如文章。
  • 僅建立者可讀寫:資料只有建立者可讀寫,其他使用者不可讀寫;比如用私密相簿。
  • 僅管理端可寫,所有人可讀:該資料只有管理端可寫,所有人可讀;如商品資訊。
  • 僅管理端可讀寫:該資料只有管理端可讀寫;如後臺用的不暴露的資料。

對於絕大多數情況下,簡單的使用這四種許可權根本無法滿足我們的要求,因此,我們還需要在程式碼層面進行一些判斷來確保具體的表現如我們所想的那樣。

比如,在做一個書櫃的專案時,希望書櫃裡的書可以設定可被第三方檢視和不可被第三方檢視,這時你只能將集合的資料設定為「僅建立者可寫,所有人可讀」,並通過程式碼來控制具體資訊是否顯示,比如加入一個 is_private 欄位來進行控制。

問答

怎樣部署小程式?

相關閱讀

教你1天搭建自己的“微視”

教你從0到1搭建小程式音視訊

教你快速搭建一場釋出會直播方案

【每日課程推薦】新加坡南洋理工大學博士,帶你深度學習NLP技術

此文已由作者授權騰訊雲+社群釋出,更多原文請點選

搜尋關注公眾號「雲加社群」,第一時間獲取技術乾貨,關注後回覆1024 送你一份技術課程大禮包!

海量技術實踐經驗,盡在雲加社群

相關文章