浅谈我对微信小程序云开发的认识与见解
一、微信小程序云開發的優點
1.無需自建服務器
2.項目快速上線
3.輕輕松松獲取用戶憑證
二、微信小程序云開發的坑
1.基礎版CDN流量太少
2.云數據庫限制多
(1)小程序端讀取限制
(2)云數據庫讀寫權限限制
3.對外開放限制多
三、我對小程序云開發總結
對于微信小程序云開發,我也算是入門吧,跳了很多坑,但也都從坑里爬了出來。通過寫下這篇博客來總結一下我對小程序云開發的認識。
所有外部依據均來自小程序官方文檔
微信推出小程序云開發的SDK是在2018年8月份,距離今天已經過去一年多了。
看一下微信官方對目前用戶的版本統計,目前99.2%(ios)的用戶支持使用微信小程序云開發發布的小程序。換句話說,目前小程序云開發發布的小程序 (絕對) 基本 可以被所有用戶使用。
說了適配問題之后,我們來看一下到底什么是微信小程序云開發
開發者可以使用云開發開發微信小程序、小游戲,無需搭建服務器,即可使用云端能力。 云開發為開發者提供完整的原生云端支持和微信服務支持, 弱化后端和運維概念,無需搭建服務器, 使用平臺提供的 API 進行核心業務開發, 即可實現快速上線和迭代,同時這一能力,同開發者已經使用的云服務相互兼容,并不互斥。 (摘自微信小程序官方文檔)重點看一下我標記的這句話:“同時這一能力,同開發者已經使用的云服務相互兼容,并不互斥”,也就是說你在使用微信小程序云開發的同時,還是可以配合正常的云服務器來使用的。
下面進入正文
一、微信小程序云開發的優點
首先要介紹的當然是小程序云開發的優點啦。
1.無需自建服務器
這一點我相信是絕大多數人,選擇使用小程序云開發的原因。不需要自己去搭建服務器,既省去了服務器搭建所耗費的時間,又省去了金錢,小程序云開發為大家提供了一個免費基礎版本。
這個配置,如果不上傳高質量的圖片,音頻及視頻的話是完全夠用的。為什么把這三類除外呢,我會舉一個實際的例子來解釋一下。 (二、1.)
2.項目快速上線
小程序云開發可以不依托外部的云服務器,來進行數據庫的增刪改查,以及對象存儲。這樣就使得項目可以快速上線,大家應該都知道如果使用外部的云服務器來制作接口的話,需要為小程序配置request合法域名,來看一下小程序官方文檔對這方面的要求。
首先只支持https協議,國內服務器必須解析域名進行ICP備案后,綁定ssl證書,然后來使用https,到這里也許有人會想到使用國外服務器繞過備案。再往下看,你會發現微信早已想到會有這個可能,強制要求域名必須通過ICP備案。那么就逃脫不了30-40天的備案時間了。
也就是說使用小程序云開發,不需要等待ICP備案的時間,開發完立馬就能審核上線。這一點也是我第一次使用小程序云開發時的原因,省去了不少時間。
3.輕輕松松獲取用戶憑證
openId對于開發者來說就相當于用戶的“身份證”,也是用戶在本小程序的唯一標識,對于不使用云開發的小程序來說,要想獲取用戶憑證流程非常復雜,看一下官方流程圖
看著流程圖就覺得頭皮發麻,大致過程是這樣的:小程序端先獲取用戶的一個登錄code——將這個code傳到自己的后端服務器——在后端服務器訪問微信官方接口,將code和一系列密鑰傳過去——微信官方接口將用戶憑證(包含openId)傳給后端服務器——后端服務器再傳給微信小程序。這是整個獲取流程。
如果使用微信小程序云開發的話,那就非常簡單了:只需要一個簡單的云函數,在小程序端觸發這個云函數即可。
只需兩部分代碼,即可輕松獲取到用戶憑證,效果如下
二、微信小程序云開發的坑
1.基礎版CDN流量太少
在我最近做的一個項目中,僅在開發與測試期間,上傳/下載了相冊原畫質的圖片就用了765MB(四五天時間),當時我就意識到了事情的嚴重性,因為這個項目上線后需要每天為百名用戶來使用,如果像我測試的那樣,可能CDN流量兩天就用完了。一旦CDN流量用完升級配置,一個月最少都要30塊錢,這個價錢可以在外面購買一個很好的對象存儲服務了。
不過還好我發現這個問題比較早,及時控制了上傳圖片的質量,每次上傳圖片程序自動都進行一次壓縮,每張大概在200kb以內,在正式使用到現在也就消耗了1mb左右的CDN流量。(日均活躍用戶在60人左右)
2.云數據庫限制多
這個坑我覺得對于我來說是最深的一個,云數據庫的限制有兩方面。第一個方面是小程序端獲取數據條數限制。第二個方面是云數據庫讀寫權限限制。
(1)小程序端讀取限制
小程序端直接請求數據庫,每次最多可以讀取20條數據
使用云函數請求數據庫,再通過小程序端觸發云函數,每次最多讀取100條數據
要是每次需要請求的數據超過100條,那就需要使用skip分次請求再進行組合了,具體操作可查看官方文檔或其他博客。
(2)云數據庫讀寫權限限制
在說這個坑之前先說一下,小程序云數據庫為非關系型數據庫,不能使用外鍵內鍵聯合查詢。(與上下文無關,本文未提到)
云數據庫最開放的權限是:所有用戶可讀,僅創建者可改。
也就是說你創建了一條記錄,他人無法進行修改或刪除,這也就導致了一系列的問題。下面舉一個我實際項目的例子。
eg:現有一個多座位的自習室供用戶預定,用戶每次預定可以選擇一個使用時間,到這個時間結束后這個座位可以被其他人再次預定。
簡單的一個場景,正常的邏輯下我們數據庫的自習室表里應該有這三個主要的字段就夠了,自習室標識(r_id),自習室到期時間(r_date),自習室是否可預定(r_flag)。
當一個用戶選擇預定一個自習室時,我只需要判斷這個自習室的r_flag是否為true即可,如果為true,用戶可以預定,預定成功后r_date刷新,r_flag置為false即可。
但是,小程序云開發提供的云數據庫,最開放的權限為所有用戶可讀,僅創建者可改。 就導致上述邏輯行不通。我們就需要更復雜一點的邏輯來實現這個功能。
我當時的做法是:每次用戶預定自習室時都提交一條數據,將每個自習室所有的預定數據按照時間先后放到一個個棧內,最新的預定放到上面,這樣下次有人進行預定時,只需要比較是否到最上面那條數據的r_date,來判斷該自習室目前是否可被預定。不修改記錄實現一個覆蓋刪除的功能。
3.對外開放限制多
一個正常的小程序項目一般都會配一個后臺管理系統,這個后臺管理系統與小程序共用一個數據庫,來對數據進行管理。由于小程序云開發自帶的云數據庫在小程序內部,外部要是想訪問這個數據庫則需要一個稍微復雜的流程:
先使用官方接口獲取到調用憑證,在通過這個憑證使用指定的接口來對數據庫進行增刪改查。此外這個流程中消耗的資源也是算在基礎配置里的,每日請求上線5萬次。
三、我對小程序云開發總結
介紹完了小程序云開發的優點和坑之后,我覺得小程序云開發的適用人群就非常明確了:如果你沒有一個已經備案過的域名和一臺云服務器,又想使項目快速上線,且對云存儲、云數據庫的要求不高,那么小程序云開發非常適合你,0開發成本即可發布一款微信小程序。
如果你的日活用戶非常多,又不想花費用升級云開發的配置,那么小程序云開發并不太適合你。
別著急走,如果你的日活用戶不是太多,基礎版的云函數請求足夠用的話,那么你可以使用小程序云開發,來減少一些復雜的流程,再配合自己的外部服務器來開發,效果極佳。如果有機會,再以后的博客里我會介紹一下如何通過云函數配合外部服務器(無需解析域名備案,http協議)來實現數據請求。
總的來說,我覺得小程序云開發帶來的利大于弊
總結
以上是生活随笔為你收集整理的浅谈我对微信小程序云开发的认识与见解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于遥感解译与GIS技术环境影响评价图件
- 下一篇: Python迭代器、生成器、可迭代对象