由於工做緣由,使用過亞馬遜AWS的serverless構架,當時就以爲這是一個很是適合小程序的基礎設施。今年開始本身的微信小程序開發,決定用serverless架構,因而便使用了騰訊雲作爲小程序的後端,總結下來有如下幾個痛點:數據庫
當暴露API給小程序時,須要使用已備案的域名。而在騰訊雲裏備案域名須要租用至少三個月的雲服務器(無聊的套路)。可是我只用雲函數,不須要雲服務器。因而我花了一百多元租了個最低配雲服務器只爲了域名備案。json
雲函數的冷啓動耗時不是特別理想,我須要使用一個定時器每隔30秒觸發一次我比較經常使用的幾個雲函數,確保它們老是處於熱啓動的狀態。小程序
花了大量時間來配置雲函數,對象儲存,雲數據庫(用的是MySQL),CDN靜態加速,使它們之間能順暢的協同工做。令我意外的是騰訊雲的人工客服系統。在配置系統時我常常會提交工單問一些本身難以解決的問題,有時是在凌晨兩點。而他們的客服和工程師有時會在一小時內回答個人問題!segmentfault
這個月當我開始新的小程序項目(私貨夾帶:《Meetup丨活動報名組局》)發現微信開發者工具整合進了雲開發。因而便有了這個雲開發實戰系列。微信送了兩個雲環境,一個用於開發,一個用於發佈。我命名一個爲dev,一個爲release。這一篇我想主要談談關於環境配置踩過的坑。後端
坑一:當完成開發準備發佈時,我從dev環境轉換到release環境。這個步驟並非在雲開發控制檯上選擇當前環境就能完成的,而須要在app.js裏指定環境ID微信小程序
App({ onLaunch: function () { if (!wx.cloud) { console.error('請使用 2.2.3 或以上的基礎庫以使用雲能力') } else { wx.cloud.init({ env: 'release-xxxx' // 你的環境ID traceUser: true, }) } } })
並在每個雲函數的cloud.init函數裏指定環境ID服務器
const cloud = require('wx-server-sdk') cloud.init({ env: 'release-xxxx' // 你的環境ID }) const db = cloud.database()
坑二:從dev轉到release時,千萬不要忘記設置爲release環境的數據庫設置相應的權限,不然新環境會使用默認的僅建立者及管理員可讀寫
,而個人小程序主頁須要全部用戶可讀,僅建立者及管理員可寫
權限,這個問題很容易在開發階段被忽視,由於開發測試時我一直是建立者身份。致使發佈後朋友們紛紛告訴我打開後什麼都沒有顯示:) 還好修改雲開發不須要等待審覈,第一時間糾正了錯誤。微信
坑三:使用定時觸發器須要在雲函數文檔裏添加一個config.json文件。但我花了一點時間才搞明白爲何觸發器沒有起做用。原來像往常同樣點擊「上傳並部署」雲函數並不會使觸發器生效,而須要點擊「上傳觸發器」。
也許你已經發現其實我本身的粗枝大葉對這些坑負有責任,一些問題在小程序開發文檔裏有說起,好比設置環境ID。我只想說這些是很容易被忽略,但後果嚴重的問題。但願經過個人分享能幫你們節省點時間。我基本上對小程序雲開發持至關正面的評價。它解決了我在使用騰訊雲時遇到的三個痛點:1. 再也不須要域名備案(備案一般須要好幾天的時間,並且過程繁瑣,須要填不少表,拍幕布照片等)2. 雲函數的冷啓動時間有改善,貌似微信針對性地作了優化,我再也不須要設置定時觸發來保證它們總處於熱啓動狀態。3. 省去了本身搭建雲後臺所須要的配置過程,實現了開箱即用。微信開發
但小程序的雲開發也有一些侷限性,我會在下一篇《小程序雲開發實戰系列02--NoSQL雲數據庫》裏分享我使用雲開發數據庫的一些體會,敬請期待。架構
本系列第二章:小程序雲開發實戰系列02--雲數據庫
《Meetup丨活動報名組局》是我最近開發的一個活動報名預定工具小程序,這個系列文章主要來自我在開發這款小程序時的一些體會心得。感興趣的小夥伴能夠掃下面的二維碼進入個人小程序。