背景:
無服務開發
那什么是無服務開發呢?無服務,又稱為 Serverless
。Serverless
還處在一個比較初期的階段,目前也沒有權威和官方的定義。顧名思義, Serverless
就是指應用的開發不再需要考慮服務器這樣的硬件基礎設施,基於 Serverless
架構的應用主要依賴於像騰訊雲這樣的雲服務商提供的后台服務。比如說無服務雲函數、雲數據庫、對象存儲服務等等。簡單來說,相當於你現在要開個水果店賣水果,以前你還得要租店面,搞水電、裝修門面。現在這些都不用了,你就在一個已經搭好各種各樣設施的超市里,租一個已經幫你搞好門面的架子或者箱子,賣得好你就租大一點,賣不好就租小一點,隨時隨地隨你的心意,非常靈活。
為什么說無服務化開發是趨勢呢?因為雲服務的進程,已經從物理機,演進到 IAAS
,再到 PAAS
。IAAS
就是包括像雲虛擬機、私有網絡、網絡專線、負載均衡等等的基礎服務;PAAS
則更抽象一些,比如像雲數據庫、網絡防護等等。基於 IAAS
、PAAS
,雲服務商發展出 Serverless
這類更高級的開發服務。因此,無服務開發就會是今后開發類似小程序這類輕量應用的新的開發趨勢。
總結來說就是,之前開發一個小程序,至少要一個前端和后端,但是用了小程序雲開發之后,可以簡化成前端就可以完整開發出一個小程序了,從而以低成本方便快速的實踐項目。
雲開發的主要功能:
目前提供三大基礎能力支持:
- 雲函數:在雲端運行的代碼,微信私有協議天然鑒權,開發者只需編寫自身業務邏輯代碼
- 數據庫:一個既可在小程序前端操作,也能在雲函數中讀寫的 JSON 數據庫
- 文件存儲:在小程序前端直接上傳/下載雲端文件,在雲開發控制台可視化管理
雲函數:
雲函數是一段運行在雲端的代碼,無需管理服務器,在開發工具內編寫、一鍵上傳部署即可運行后端代碼。雲開發的雲函數的獨特優勢在於與微信登錄鑒權的無縫整合。當小程序端調用雲函數時,雲函數的傳入參數中會被注入小程序端用戶的 openid,開發者無需校驗 openid 的正確性因為微信已經完成了這部分鑒權,開發者可以直接使用該 openid。
數據庫:
雲開發提供了一個 JSON 數據庫,顧名思義,數據庫中的每條記錄都是一個 JSON 格式的對象。一個數據庫可以有多個集合(相當於關系型數據中的表),集合可看做一個 JSON 數組,數組中的每個對象就是一條記錄,記錄的格式是 JSON 對象。
這樣的話,數據庫的存儲也不用考慮了,直接提供了一個類似於 NOSQL 一樣的數據庫,而且可視化窗口提供了導入數據的功能,十分方便。
文件存儲:
雲開發提供了一塊文件存儲空間,提供了上傳文件到雲端、帶權限管理的雲端下載能力,開發者可以在小程序端和雲函數端通過 API 使用雲文件存儲功能。
在小程序端可以分別調用 wx.cloud.uploadFile 和 wx.cloud.downloadFile 完成上傳和下載雲文件操作。
開始:
打開微信開發者工具,填寫基本信息,用雲模板初始化(注意這里一定要有AppId,不能以訪客的形式初始化項目)。
初始完成之后先點擊左上角雲開發開通功能才能使用,開通之后還需要右鍵點擊login項目,然后點擊“上傳並部署”:
初始完成之后可以看到模板已經給出了幾個方法案例,源代碼也有相關注釋,可以直接查看源代碼學習就可以了。
參考文章:https://mp.weixin.qq.com/s/JoWELCugqzLITDIDVX8G4w
官方文檔:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html