之前(qian)參加過(guo)小(xiao)程序(xu)·云(yun)開發(fa)相(xiang)關的分享, 在(zai)團隊內進行了推廣, 感(gan)覺官(guan)方的宣傳不(bu)夠直(zhi)接, 還是(shi)太(tai)玄乎了, 這是(shi)收集了貓眼娛(yu)樂前(qian)端工程師的問題, 和相(xiang)關答(da)疑, 部分問題是(shi)和小(xiao)程序(xu)·云(yun)開發(fa)的同學溝通過(guo)的結論
主要面(mian)向初級前端工(gong)程師, 快速了解云開發是怎么回事, 不涉及(ji)復雜代碼
官方文檔, 不用(yong)著急點, 下面FAQ未提及的可以進(jin)來看
主要提供(gong)兩種能(neng)力
持久存儲是指刪除微(wei)信(xin)或更(geng)換(huan)手機后, 用戶重新打開我們(men)的(de)小程(cheng)序, 仍(reng)舊(jiu)能讓用戶看到自(zi)己的(de)信(xin)息
主要通(tong)過兩種存(cun)儲容(rong)器
簡(jian)單解釋(shi): 在小程序端(duan)寫上(shang)函(han)數(shu)名(ming) + 參(can)數(shu), 就能調(diao)用遠端(duan)的一個函(han)數(shu)
為什么(me)不直接(jie)寫(xie)到小程序端, 而要(yao)繞(rao)彎子要(yao)這樣? 最常見的原因(yin)是:
云開發的(de)數(shu)據庫(ku)和(he)傳統數(shu)據庫(ku)有些(xie)區別(bie), 他(ta)會自動給(gei)每(mei)個數(shu)據表(biao)增(zeng)加一個 創建人(ren)字段 + 表(biao)權限設置 , 后續的(de)操作都(dou)會基于這些(xie)約束(shu), 一般的(de)策(ce)略是
類似上(shang)一個數據(ju)庫的權(quan)限(xian)(xian), 通過(guo) 文件(jian)創建人 + 文件(jian)夾權(quan)限(xian)(xian)設(she)置(zhi)
文件的操作使用(yong)服務端生(sheng)成(cheng)的唯一ID, 不會被窮舉
不會(hui), 云函數(shu)的網(wang)絡(luo)協議是私有的, 并且有加上數(shu)字簽名驗(yan)證
這套機制是在微信app內部實現的, 除非微信這套機制被(bei)攻破
是js, 運(yun)行環境(jing)是nodejs 8.9, 支(zhi)持async await關鍵字
目(mu)前(qian)還(huan)不(bu)支(zhi)持修改運行環境, 未來應該會支(zhi)持自選環境
不是, 兩個可以(yi)并存, 就(jiu)當是看起來不一樣的異步調(diao)用(yong)就(jiu)好
// 云開發相關api wx.cloud.xxxx() // 自有服務 wx.request() 復制代碼
由(you)于是nodejs的(de)運行環境, 所以(yi)云函數(shu)可(ke)以(yi)使用http tcp模塊, 這樣就能通過云函數(shu)轉(zhuan)發請求到任意域名, 不受小程序端(duan)的(de)請求域名限制
// 小程序端, 調用
wx.cloud.callFunction({
name: 'foo',
data: { a: 1, b: 2 },
success: function(res) {
console.log(res.result)
}
)
// 云函數, 聲明
// cloudfunctionRoot/functions/foo/index.js
exports.main = async function(e, ctx) {
return e.a + e.b
}
復制代碼
函(han)數名(ming)(ming)和(he)目錄名(ming)(ming)對應, 根路徑在project.config.json中(zhong)定義, 詳(xiang)細參考官方文(wen)檔中(zhong)的"我(wo)的第一個云函(han)數"
直接(jie)獲取用戶(hu)的openId
// index.js
exports.main = (event, context) => {
return event.userInfo
}
復制代碼
如要獲取用戶頭像 昵(ni)稱等信息, 還(huan)是(shi)需要在小程序(xu)端進行(xing)授權才行(xing)
不需要, 只要開發好上傳就行(xing), 運行(xing)環境(jing)(jing)是獨立 封(feng)閉的, 類(lei) CentOS 7 的環境(jing)(jing)
提供1個生產(chan)環(huan)境(jing), 和1個開發環(huan)境(jing), 存儲和云(yun)函數都是獨立的
這(zhe)意味著多(duo)個(ge)開發者并行(xing)開發協作可能(neng)會有些小麻煩, 同時只能(neng)有一套(tao)代碼在開發環(huan)境, 這(zhe)就只能(neng)通過一些工作流程約定, 比(bi)如收(shou)斂上傳(chuan)權(quan)限, 每(mei)日(ri)自動部署. 應(ying)用類(lei)似git-flow的(de)分支策略
暫時沒有, 這方面(mian)的需求(qiu)還是(shi)很強的, 畢竟小程序是(shi)提倡線下(xia)掃(sao)(sao)碼, 掃(sao)(sao)碼后(hou)還是(shi)期望能夠獲(huo)取到附近的相關(guan)信息, 簡單(dan)的比如城市 區劃, 詳細的比如商家
小程序云開發的同學目前還在收集(ji)這方面的需求(qiu)
基礎庫(ku) 2.2.3 之后開始支持(chi), 但對于(yu)舊版本可以加個配(pei)置也能(neng)支持(chi)
app.json/game.json
{
"cloud": true
}
復制代碼
目前免費, 正在調(diao)研計(ji)費策(ce)略, 可能(neng)是按照(zhao)調(diao)用量, 存(cun)儲量計(ji)費