當(dāng)前位置:首頁 > IT技術(shù) > 微信平臺 > 正文

微信小程序與云開發(fā)
2021-07-26 10:22:09

?

微信小程序基礎(chǔ)概念

小程序云開發(fā)的三大基礎(chǔ)能力:云數(shù)據(jù)庫、云函數(shù)、云存儲

Java、NodeJS、JavaScript、HTML5、CSS3、VueJs、ReactJs、前端工程化、前端架構(gòu)

小程序開發(fā)入門基礎(chǔ),開發(fā)流程,云開發(fā)的使用,獨(dú)自完成小程序開發(fā)

什么是小程序:小程序是一種不需要下載安裝即可使用的應(yīng)用,它實(shí)現(xiàn)了應(yīng)用“觸手可及”的夢想,用戶掃一掃或者搜一下即可打開應(yīng)用。也體現(xiàn)了“用完即走”的理念,用戶不用關(guān)心是否安裝太多應(yīng)用的問題。應(yīng)用將無處不在,隨時(shí)可用,但又無需安裝卸載。

小程序開發(fā)成本低,周期短,維護(hù)升級簡單,推廣成本低。

JSON全局配置,項(xiàng)目配置

云開發(fā),云數(shù)據(jù)庫,云函數(shù),云存儲

用戶登錄

如何通過云函數(shù)獲取openid
傳統(tǒng)微信登錄,與,云開發(fā)微信登錄
如何獲取用戶信息

電影列表

如何云函數(shù)調(diào)用第三方api
云函數(shù)調(diào)用api,與,小程序調(diào)用api
渲染列表

電影評價(jià)

云數(shù)據(jù)庫插入數(shù)據(jù)
選擇相冊圖片或拍照
云存儲的圖片上傳

微信小程序與云開發(fā)_學(xué)習(xí)

image.png

微信小程序與云開發(fā)_學(xué)習(xí)_02

image.png

.json配置文件,以json格式存儲一些配置
.wxml模板文件,描述頁面結(jié)構(gòu),相當(dāng)于HTML
.wxss樣式文件,調(diào)整頁面樣式,相當(dāng)于css
.js腳本邏輯文件,頁面和用戶的交互邏輯

配置文件json
project.config.json:項(xiàng)目配置
app.json:全局配置
page.json:頁面配置

頁面結(jié)構(gòu)wxml

頁面樣式wxss

頁面交互js

// app.json
pages/base/base
pages/cloud/cloud

頁面結(jié)構(gòu)wxml

<image src="{{img}}"></image>
<view wx:for="{{arr}}" wx:key="{{index}}">
{{index}}{{item}}
</view>
<view wx:for="{{list}}">
{{item.name}}{{item.age}}
</view>

now you can provide attr 'wx:key' for a 'wx:for' to improve performance.

wx:if=""

hidden="{{}}"

之間差別

微信小程序與云開發(fā)_學(xué)習(xí)_03

image.png

wxss是一套用于小程序的樣式語言,描述wxml組件樣式。

尺寸單位:rpx
可以根據(jù)屏幕寬度進(jìn)行自適應(yīng),適配不同寬度的屏幕

onTapHandler: function() {
// this.data.count++;

count: this.data.count + 1
},

微信小程序與云開發(fā)_學(xué)習(xí)_04

image.png

微信小程序與云開發(fā)_學(xué)習(xí)_05

image.png

微信小程序與云開發(fā)_學(xué)習(xí)_06

image.png

微信小程序與云開發(fā)_學(xué)習(xí)_07

image.png

微信小程序與云開發(fā)_學(xué)習(xí)_08

image.png

微信小程序與云開發(fā)_學(xué)習(xí)_09

image.png

微信小程序與云開發(fā)_學(xué)習(xí)_10

image.png

微信小程序與云開發(fā)_學(xué)習(xí)_11

image.png

云數(shù)據(jù)庫

微信小程序與云開發(fā)_學(xué)習(xí)_12

image.png

微信小程序與云開發(fā)_學(xué)習(xí)_13

image.png

微信小程序與云開發(fā)_學(xué)習(xí)_14

image.png

微信小程序與云開發(fā)_學(xué)習(xí)_15

image.png

微信小程序與云開發(fā)_學(xué)習(xí)_16

image.png

微信小程序與云開發(fā)_學(xué)習(xí)_17

image.png

微信小程序與云開發(fā)_學(xué)習(xí)_18

image.png

cloud.js
const db = wx.cloud.database(); // 初始化

wxml
<button bindtap="insert">插入數(shù)據(jù)庫</button>

創(chuàng)建數(shù)據(jù)庫
user

insert: function() {
db.collection('user').add({
data: {
name: 'dashu',
age:20
},
success: res => {
console.log(res);
},
fail: err => {
console.log(err);
}
})
}

insert: function() {
db.collection('user').add({
data: {
name: 'jack',
age: 12
}
}).then(res=>{
console.log(res);
}).catch(err=>{
console.log(err);
})
},
<button bindtap="update">更新數(shù)據(jù)</button>
update: function() {
db.collection('user').doc('_id').update({
data: {
age:23
}
}).then(res => {
console.log(res);
}).catch(err => {
console.log(err);
})
},
search: function() {
db.collection('user').where({
name: 'yerry'
}).get().then(res=> {
console.log(res);
}).catch(err=>{
console.log(err);
});
}

微信小程序與云開發(fā)_學(xué)習(xí)_19

image.png

微信小程序與云開發(fā)_學(xué)習(xí)_20

image.png

云函數(shù):

?

微信小程序與云開發(fā)_學(xué)習(xí)_21

image.png

求和函數(shù)sum()

獲取當(dāng)前用戶的openid

批量刪除云數(shù)據(jù)庫的數(shù)據(jù)

微信小程序與云開發(fā)_學(xué)習(xí)_22

image.png

微信小程序與云開發(fā)_學(xué)習(xí)_23

image.png

wx-server-sdk
服務(wù)器sdk

微信小程序與云開發(fā)_學(xué)習(xí)_24

image.png

在終端中:

npm install --save wx-server-sdk@latest
index.js
// 云函數(shù)入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函數(shù)入口函數(shù)
exports.main = async(event, context) => {
const wxContent = cloud.getWXContent()
return {
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
}
}

修改

sum
// index.js
// 云函數(shù)入口函數(shù)
exports.main = async (event, context) => {
return {
sum: event.a + event.b
}
}
<view>云函數(shù)</view>
<button bindtap="sum">調(diào)用云函數(shù)sum</button>
sum: function() {
wx.cloud.callFunction({
name: 'sum',
data: {
a: 2,
b: 3
}
}).then(res=>{
console.log(res);
}).catch(err=>{
console.log(err);
});
},

獲取當(dāng)前用戶openid

<button bindtap="getOpenId">獲取當(dāng)前用戶openid</button>
getOpenId: function() {
}

傳統(tǒng)的微信登錄方式

用戶端小程序

微信服務(wù)器

后端服務(wù)器

用戶端的小程序發(fā)送請求
通過wx.login獲取code
在微信的服務(wù)端獲取一個(gè)code
在從用戶端小程序
調(diào)用wx.request將code傳遞給后端服務(wù)器

后端服務(wù)器
使用code換取openid和session_key

最后將用戶的標(biāo)識發(fā)送給小程序本地存儲

云開發(fā)微信登錄

用戶

小程序

云函數(shù)

云數(shù)據(jù)庫

用戶通過點(diǎn)擊獲取用戶信息
用戶-》小程序

小程序-》云函數(shù)
獲取用戶信息

云函數(shù)-》小程序
返回用戶信息

小程序-》云數(shù)據(jù)庫
通過小程序?qū)⒂脩粜畔⒋鎯Φ皆茢?shù)據(jù)庫

// login
index.js
const cloud = require('wx-server-sdk')

// 初始化 cloud
// 小程序用戶openid返回小程序端
// event參數(shù)包含小程序端調(diào)用傳入的data
exports.main = (event, context) => {
console.log(event)
console.log(context)
const wxContext = cloud.getWXContext()

// 獲取WXContext(微信調(diào)用上下文)
// 包括OPENID,APPID,UNIONID

return {
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
}
// cloud
// cloud.js cloud.json cloud.wxml cloud.wxss
getOpenId: function() {
wx.cloud.callFunciton({
name: 'login'
}).then(res => {
console.log(res);
}).catch(err=>{
console.log(err);
});
}

微信小程序與云開發(fā)_學(xué)習(xí)_25

image.png

// batchDelete
const cloud = require('wx-server-sdk')
cloud.init()
const db=cloud.database();
// 云函數(shù)入口函數(shù)
exports.main = async (event, context) => {
try{
return await db.collection('user').where({
nme: 'dashu'
}).remove();
}catch(e) {
console.error(e);
}
}

微信小程序與云開發(fā)_學(xué)習(xí)_26

image.png

batchDelete: function() {
wx.cloud.callFunction({
name: 'batchDelete'
}).then(res => {
console.log(res);
}).catch(err => {
console.error(err);
});
},

微信小程序與云開發(fā)_學(xué)習(xí)_27

image.png

云存儲

wx.cloud.uploadFile 上傳文件
wx.cloud.downloadFile 下載文件
wx.cloud.deleteFile 刪除文件
wx.cloud.getTempFileURL 獲取臨時(shí)連接

文件上傳

用戶,小程序,云存儲,云數(shù)據(jù)庫

用戶選擇圖片或拍照到小程序
小程序上傳所選圖片到云存儲
云存儲返回fileID到小程序

小程序通過fileID存儲到云數(shù)據(jù)庫

<view>云存儲</view>
<button bindtap = "upload">上傳圖片</button>

wx.chooseImage(Object object)
從本地相冊選擇圖片或使用相機(jī)拍照

upload: function() {
// 選擇圖片
wx.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success(res){
const tempFilePaths = res.tempFilePaths
console.log(tempFilePaths);

wx.cloud.uploadFile({
cloudPath: new Date().getTime() + '.png', // 上傳到云端的路徑
filePath: tempFilePaths[0], // 小程序臨時(shí)文件路徑,數(shù)組
success: res => {
console.log(res.fileID)
db.collection('image').add({
data: {
fildID: res.fileID
}
}).then(res => {
console.log(res);
}).catch(err => {
console.error(err);
})
},
fail: console.error
})

}
})
}

微信小程序與云開發(fā)_學(xué)習(xí)_28

image.png

errMsg:
parameter.filePath should be string instead of array

上傳文件
在小程序端可以調(diào)用wx.cloud.uploadFile方法進(jìn)行上傳:

wx.cloud.uploadFile({
cloudPath: 'example.png', // 上傳到云端的路徑
filePath: '', // 小程序臨時(shí)文件路徑
success: res => {
console.log(res.fileID)
},
fail: console.error
})

微信小程序與云開發(fā)_學(xué)習(xí)_29

image.png

云存儲

上傳圖片展示

<button bindtap="getFile">文件展示</button>

微信小程序與云開發(fā)_學(xué)習(xí)_30

image.png

微信小程序與云開發(fā)_學(xué)習(xí)_31

image.png

文件下載

小程序獲取文件fileID到云存儲
用戶單擊下載到小程序
小程序發(fā)送文件下載請求到數(shù)據(jù)庫
數(shù)據(jù)庫返回文件信息
小程序存儲圖片到手機(jī)相冊

<block wx:for="{{images}}">
<image src="{{item.fileID}}"></image>
<button size="mini" data-fildid="{{item.fileID}}" bindtap="downloadFile">文件下載</button>
</block>

保存圖片到相冊:

wx.saveImageToPhotoAlbum({
success(res){}
})
downloadFile: function(event){
wx.cloud.downloadFile({
fileID: event.target.dataset.fileid,
success: res=> {
console.log(res.tempFilePath)
wx.saveImageToPhotoAlbum({
filePath: res.tempFilePath
success(res){
wx.showToast({
title: '保存成功'
})
}
})

},
fail: console.error
})
},

若本號內(nèi)容有做得不到位的地方(比如:涉及版權(quán)或其他問題),請及時(shí)聯(lián)系我們進(jìn)行整改即可,會在第一時(shí)間進(jìn)行處理。


?

微信小程序與云開發(fā)_學(xué)習(xí)_32

?

本文摘自 :https://blog.51cto.com/u

開通會員,享受整站包年服務(wù)立即開通 >