之前參加過小程序·云開發(fā)相關(guān)的分享, 在團(tuán)隊(duì)內(nèi)進(jìn)行了推廣, 感覺官方的宣傳不夠直接, 還是太玄乎了, 這是收集了貓眼娛樂前端工程師的問題, 和相關(guān)答疑, 部分問題是和小程序·云開發(fā)的同學(xué)溝通過的結(jié)論
主要面向初級前端工程師, 快速了解云開發(fā)是怎么回事, 不涉及復(fù)雜代碼
官方文檔, 不用著急點(diǎn), 下面FAQ未提及的可以進(jìn)來看
主要提供兩種能力
持久存儲(chǔ)是指刪除微信或更換手機(jī)后, 用戶重新打開我們的小程序, 仍舊能讓用戶看到自己的信息
主要通過兩種存儲(chǔ)容器
簡單解釋: 在小程序端寫上函數(shù)名 + 參數(shù), 就能調(diào)用遠(yuǎn)端的一個(gè)函數(shù)
為什么不直接寫到小程序端, 而要繞彎子要這樣? 最常見的原因是:
云開發(fā)的數(shù)據(jù)庫和傳統(tǒng)數(shù)據(jù)庫有些區(qū)別, 他會(huì)自動(dòng)給每個(gè)數(shù)據(jù)表增加一個(gè) 創(chuàng)建人字段 + 表權(quán)限設(shè)置 , 后續(xù)的操作都會(huì)基于這些約束, 一般的策略是
類似上一個(gè)數(shù)據(jù)庫的權(quán)限, 通過 文件創(chuàng)建人 + 文件夾權(quán)限設(shè)置
文件的操作使用服務(wù)端生成的唯一ID, 不會(huì)被窮舉
不會(huì), 云函數(shù)的網(wǎng)絡(luò)協(xié)議是私有的, 并且有加上數(shù)字簽名驗(yàn)證
這套機(jī)制是在微信app內(nèi)部實(shí)現(xiàn)的, 除非微信這套機(jī)制被攻破
是js, 運(yùn)行環(huán)境是nodejs 8.9, 支持async await關(guān)鍵字
目前還不支持修改運(yùn)行環(huán)境, 未來應(yīng)該會(huì)支持自選環(huán)境
不是, 兩個(gè)可以并存, 就當(dāng)是看起來不一樣的異步調(diào)用就好
// 云開發(fā)相關(guān)api wx.cloud.xxxx() // 自有服務(wù) wx.request() 復(fù)制代碼
由于是nodejs的運(yùn)行環(huán)境, 所以云函數(shù)可以使用http tcp模塊, 這樣就能通過云函數(shù)轉(zhuǎn)發(fā)請求到任意域名, 不受小程序端的請求域名限制
// 小程序端, 調(diào)用 wx.cloud.callFunction({ name: 'foo', data: { a: 1, b: 2 }, success: function(res) { console.log(res.result) } ) // 云函數(shù), 聲明 // cloudfunctionRoot/functions/foo/index.js exports.main = async function(e, ctx) { return e.a + e.b } 復(fù)制代碼
函數(shù)名和目錄名對應(yīng), 根路徑在project.config.json中定義, 詳細(xì)參考官方文檔中的"我的第一個(gè)云函數(shù)"
直接獲取用戶的openId
// index.js exports.main = (event, context) => { return event.userInfo } 復(fù)制代碼
如要獲取用戶頭像 昵稱等信息, 還是需要在小程序端進(jìn)行授權(quán)才行
不需要, 只要開發(fā)好上傳就行, 運(yùn)行環(huán)境是獨(dú)立 封閉的, 類 CentOS 7 的環(huán)境
提供1個(gè)生產(chǎn)環(huán)境, 和1個(gè)開發(fā)環(huán)境, 存儲(chǔ)和云函數(shù)都是獨(dú)立的
這意味著多個(gè)開發(fā)者并行開發(fā)協(xié)作可能會(huì)有些小麻煩, 同時(shí)只能有一套代碼在開發(fā)環(huán)境, 這就只能通過一些工作流程約定, 比如收斂上傳權(quán)限, 每日自動(dòng)部署. 應(yīng)用類似git-flow的分支策略
暫時(shí)沒有, 這方面的需求還是很強(qiáng)的, 畢竟小程序是提倡線下掃碼, 掃碼后還是期望能夠獲取到附近的相關(guān)信息, 簡單的比如城市 區(qū)劃, 詳細(xì)的比如商家
小程序云開發(fā)的同學(xué)目前還在收集這方面的需求
基礎(chǔ)庫 2.2.3 之后開始支持, 但對于舊版本可以加個(gè)配置也能支持
app.json/game.json
{ "cloud": true } 復(fù)制代碼
目前免費(fèi), 正在調(diào)研計(jì)費(fèi)策略, 可能是按照調(diào)用量, 存儲(chǔ)量計(jì)費(fèi)