?
速度快
無需下載安裝,加載速度快于HTML5,隨時可用
無適配
一次開發(fā),多端兼容,免除了對各種手機機型的適配
可分享
支持圖文分享,支持分享給微信好友和群聊
體驗好
可達到近乎與原生app相同的操作體驗和流暢度
易獲取
支持掃碼,微信搜索,好友推薦
低門檻
已有公眾號的組織可快速注冊,可快速生成門店小程序
image.png
小程序數(shù)量超100萬開發(fā)者
image.png
視圖層:
?
image.png
傳統(tǒng)的視圖和數(shù)據(jù)綁定:
?
image.png
image.png
小程序后臺開發(fā)
小程序云開發(fā)是微信團隊
集成于小程序控制臺的原生serverless云服務
核心功能包括:
云存儲,云數(shù)據(jù)庫,云函數(shù)
代碼執(zhí)行
數(shù)據(jù)存儲能力
文件存儲能力
能力:
云函數(shù):在云端運行的代碼,微信私發(fā)天然鑒權,開發(fā)者只需編寫自身業(yè)務邏輯代碼
數(shù)據(jù)庫:提供增刪改查能力的mongoDB數(shù)據(jù)庫
存儲:可上傳下載刪除文件的存儲服務,自帶CDN
特色:
既可在小程序端操作,也可以服務端(云函數(shù),服務器)操作
可視化操作
數(shù)據(jù)庫和存儲,在小程序端只有用戶級別的權限,而在服務端則有管理員的權限
云函數(shù):
const cloud = require('wx-server-sdk')
exports.main = async(event, context) -> {
const res = await cloud.callFunction({
// 要調用的云函數(shù)名稱
name: 'add',
data: {
x: 1,
y: 2,
}
})
return res.result
}
云數(shù)據(jù)庫
文檔型數(shù)據(jù)庫
數(shù)據(jù)庫包含多個集合,集合近似于一個json數(shù)組,數(shù)組中的每個對象就是一條記錄,記錄的格式是json文檔
簡單易用
數(shù)據(jù)庫api包含增刪改查,操作簡單:獲取數(shù)據(jù)庫引用,構造查詢、更新條件,發(fā)送請求
權限控制
api分為小程序端和服務端兩部分,開發(fā)者可在小程序內直接調用api進行非敏感數(shù)據(jù)的操作
對于更高安全要求的數(shù)據(jù),可在云函數(shù)內通過服務端api進行操作
云數(shù)據(jù)庫api
觸發(fā)網絡請求:
get 獲取集合,記錄數(shù)據(jù)
add 在集合上新增記錄
update 更新集合,記錄數(shù)據(jù)
set 替換更新一個記錄
remove 刪除記錄
count 統(tǒng)計查詢語句對應的記錄條數(shù)
獲取引用
database 獲取數(shù)據(jù)庫引用,返回database對象
collection 獲取集合引用,返回collection對象
doc 獲取對一個記錄的引用,返回document對象
數(shù)據(jù)庫對象database
command 獲取數(shù)據(jù)庫查詢及更新指令,返回command
serverDate 構造服務端時間
集合對象collection
doc 獲取對一個記錄的引用,返回document對象
add 在集合上新增記錄
where 構建一個在當前集合上的查詢條件,返回query,查詢條件中可使用查詢指令
orderBy 指定查詢數(shù)據(jù)的排序方式
limit 指定返回數(shù)據(jù)的數(shù)量上限
skip 指定查詢時從命中的記錄列表中的第幾項之后開始返回
field 指定返回結果中每條記錄應包含的字段
記錄對象document
get 獲取記錄數(shù)據(jù)
update 局部更新數(shù)據(jù)
set 替換更新記錄
remove 刪除記錄
field 指定返回結果中金雞路應包含的字段
command對象查詢db.command
eq 字段是否等于指定值
neq 字段是否不等于指定值
it 字段是否小于指定
add
const db = wx.cloud.database();
db.collection('blog').add({
data: {
title: 'test blog',
content: 'test content'
}
}).then((res) => {
}).catch(console.error);
存儲api
uploadFile 上傳文件
downloadFile 下載文件
deleteFile 刪除文件
getTempFileURL 換取臨時鏈接
uploadFile: function() {
wx.choodeImage({
success: dRes => {
wx.cloud.uploadFile({
cloudPath: cloudPath,
filePath: dRes.tempFilePaths[0]
}).then((res) => {
}).catch(console.error);
},
fail: console.error,
})
}
image.png
傳統(tǒng)開發(fā)模式
彈性伸縮,異地容災,網絡防護,負載均衡,網絡專線,安全加固,冷備熱備,內容加速,監(jiān)控告警,數(shù)據(jù)庫,文件存儲,其它請求,后端,小程序端
云開發(fā)模式
云開發(fā),數(shù)據(jù)庫,文件存儲,云函數(shù)
傳統(tǒng)開發(fā)模式:
小程序端:
wx.chooseImage + wx.uploadFile
后端:框架+路由+上傳到騰訊云對象存儲的邏輯
運維:性能+安全
云開發(fā)模式:
uploadFile: function() {
wx.chooseImage({
success: dRes => {
wx.cloud.upload({
cloudPath: cloudPath,
filePath: dRes.temFilePaths[0]
}).then(res) => {
}).catch(console.error);
},
fail: console.error,
})
}
wx.request
const db = wx.cloud.database();
db.collection('blog').add({
data: {
title: 'test blog',
content: 'test content'
}
}).then((res) => {
}).catch(console.error);
image.png
在云函數(shù)中處理:
調用微信生成小程序碼的接口
將圖片存儲至文件存儲
獲取臨時圖片url
云函數(shù)處理邏輯:
輸入page,param
查詢小程序云數(shù)據(jù)庫access_token是否有效?
有效
小程序獲取小程序碼base64
轉為二進制文件,上傳到小程序云存儲
獲取臨時圖片url
小程序端展示小程序碼
無效
小程序接口獲取access_token
緩存access_token到小程序云數(shù)據(jù)庫
image.png
image.png
image.png
axios
若本號內容有做得不到位的地方(比如:涉及版權或其他問題),請及時聯(lián)系我們進行整改即可,會在第一時間進行處理。
?
?
本文摘自 :https://blog.51cto.com/u