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