小程序·雲開發初級FAQ

以前參加太小程序·雲開發相關的分享, 在團隊內進行了推廣, 感受官方的宣傳不夠直接, 仍是太玄乎了, 這是收集了貓眼娛樂前端工程師的問題, 和相關答疑, 部分問題是和小程序·雲開發的同窗溝經過的結論html

主要面向初級前端工程師, 快速瞭解雲開發是怎麼回事, 不涉及複雜代碼前端

  • 有小程序開發經驗
  • 理解 server 端基礎, 並有少許node.js server端經驗

1. 小程序雲開發是什麼?

官方文檔, 不用着急點, 下面FAQ未說起的能夠進來看node

主要提供兩種能力git

1.1 提供持久存儲

持久存儲是指刪除微信或更換手機後, 用戶從新打開咱們的小程序, 仍舊能讓用戶看到本身的信息數據庫

主要經過兩種存儲容器編程

  1. 類mangodb的數據庫存儲, 好比用戶提交的文章
  2. 文件存儲, 好比用戶上傳的照片

1.2 提供簡化的server端編程環境

雲函數json

簡單解釋: 在小程序端寫上函數名 + 參數, 就能調用遠端的一個函數小程序

爲何不直接寫到小程序端, 而要繞彎子要這樣? 最多見的緣由是:設計模式

  1. 有些業務邏輯涉及保密信息, 不能寫在小程序上, 好比: 價格計算, 交易流程
  2. 有些操做須要更高的權限, 好比: 管理員能夠刪除全部用戶的數據.
  3. 橋接到第三方接口, 小程序https接口域名數量超限, 或者第三方接口不是https接口.

2. 直接操做數據庫會不會有安全問題

雲開發的數據庫和傳統數據庫有些區別, 他會自動給每一個數據表增長一個建立人字段 + 表權限設置, 後續的操做都會基於這些約束, 通常的策略是api

  1. 每一個用戶只能修改本身建立的信息, 好比本身發的文章
  2. 每一個用戶只能讀取其餘用戶的信息, 但不能修改, 好比其餘人發的文章
  3. 每一個用戶只能讀取公共信息, 但不能修改, 好比公告信息, 通常會容許經過管理端修改

3. 直接操做文件存儲會不會有安全風險

相似上一個數據庫的權限, 經過文件建立人 + 文件夾權限設置

文件的操做使用服務端生成的惟一ID, 不會被窮舉

4. 別人會不會調用個人雲函數

不會, 雲函數的網絡協議是私有的, 而且有加上數字簽名驗證

這套機制是在微信app內部實現的, 除非微信這套機制被攻破

5.雲函數是用js寫麼, 運行環境是什麼?

是js, 運行環境是nodejs 8.9, 支持async await關鍵字

目前還不支持修改運行環境, 將來應該會支持自選環境

6. 使用了雲開發, 是否是就不能使用本身的服務端了

不是, 兩個能夠並存, 就當是看起來不同的異步調用就好

// 雲開發相關api
wx.cloud.xxxx()

// 自有服務
wx.request()
複製代碼

因爲是nodejs的運行環境, 因此雲函數可使用http tcp模塊, 這樣就能經過雲函數轉發請求到任意域名, 不受小程序端的請求域名限制

7. 典型的雲函數是什麼樣的?

// 小程序端, 調用
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
}
複製代碼

函數名和目錄名對應, 根路徑在project.config.json中定義, 詳細參考官方文檔中的"個人第一個雲函數"

8. 雲函數還有什麼特殊能力?

直接獲取用戶的openId

// index.js
exports.main = (event, context) => {
  return event.userInfo
}
複製代碼

如要獲取用戶頭像 暱稱等信息, 仍是須要在小程序端進行受權才行

9. 雲函數須要咱們考慮服務器運維的工做麼

不須要, 只要開發好上傳就行, 運行環境是獨立 封閉的, 類 CentOS 7 的環境

10. 開發時和線上環境有隔離麼

提供1個生產環境, 和1個開發環境, 存儲和雲函數都是獨立的

這意味着多個開發者並行開發協做可能會有些小麻煩, 同時只能有一套代碼在開發環境, 這就只能經過一些工做流程約定, 好比收斂上傳權限, 每日自動部署. 應用相似git-flow的分支策略

11. 雲開發是否提供有定位 地理信息 支付相關業務的支持

暫時沒有, 這方面的需求仍是很強的, 畢竟小程序是提倡線下掃碼, 掃碼後仍是指望可以獲取到附近的相關信息, 簡單的好比城市 區劃, 詳細的好比商家

小程序雲開發的同窗目前還在收集這方面的需求

12. 什麼版本的基礎庫支持雲開發

基礎庫 2.2.3 以後開始支持, 但對於舊版本能夠加個配置也能支持

app.json/game.json

{
  "cloud": true
}
複製代碼

13. 費用呢

目前免費, 正在調研計費策略, 多是按照調用量, 存儲量計費

結語

目前看雲開發基本成型, 典型的業務都能覆蓋到了, 還有一些周邊的東西須要完善

好比數據庫存儲這邊的批量操做, 事務的支持, 存儲容器還能夠在增長一些, 好比消息隊列, 其它的雜項如任務調度, 開發者環境隔離, 數據遷移升級

另外一方面, 做爲前端工程師, 技術能力邊界的延伸, 並不徹底意味着獲益, 還包括背景知識成本, 只有學習好這些, 才能駕馭好新的能力, 好比領域建模, 設計模式, 封裝和隔離.


你們好,我是貓眼娛樂前端技術專家-曹宇,我主要負責貓眼娛樂電影選座交易業務前端, 除了你們能看到的各類 Web 頁面, 還有小程序端和供應鏈端. 同時負責貓眼內部的前端基礎設施, 質量保證相關工做。

貓眼電影小程序從零發展到票務類別第一, 主要關注點都集中在線上, 此次分享的是一個線上 線下聯動的活動, 從開發到上線後遇到的一些有趣的事情, 除了小程序技術的深度應用, 還包括產品 運營層面的思考.

本週六(10月21日)我會作客掘金Bilibili直播間爲你們作一場《打碼指南:由貓眼線下掃碼1分購談起》的直播。直播中咱們也會送出技術圖書,大號定製鼠標墊等獎品,歡迎週六下午你們與咱們一塊兒交流。

相關文章
相關標籤/搜索