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