一、页面展示与交互功能
1. 页面导航与切换
通过 <navigator> 组件或编程式导航 API 实现页面间跳转:
<!-- 在WXML中使用navigator组件实现跳转 -->
<navigator url="/pages/detail/detail" open-type="navigateTo">跳转到详情页</navigator>
// 在.js文件中使用编程式导航
Page({
goToDetail() {
wx.navigateTo({
url: "/pages/detail/detail"
});
}
})
2. 下拉刷新与上拉加载更多
配置并实现下拉刷新和上拉加载更多功能:
{
"enablePullDownRefresh": true
}
Page({
data: {
list: [],
page: 1,
size: 10
},
onLoad() {
this.loadData();
},
onPullDownRefresh() {
this.setData({
page: 1,
list: []
});
this.loadData(() => {
wx.stopPullDownRefresh();
});
},
onReachBottom() {
this.setData({
page: this.data.page + 1
});
this.loadData();
},
loadData(callback) {
wx.request({
url: `https://api.example.com/list?page=${this.data.page}&size=${this.data.size}`,
success: (res) => {
const newList = this.data.page === 1 ? res.data.list : [...this.data.list, ...res.data.list];
this.setData({
list: newList
});
if (callback) callback();
}
});
}
})
3. 表单提交与验证
实现带验证的表单提交功能:
<form bindsubmit="submitForm">
<input name="username" placeholder="请输入用户名" />
<input name="password" placeholder="请输入密码" type="password" />
<button form-type="submit">提交</button>
</form>
Page({
submitForm(e) {
const formData = e.detail.value;
if (!formData.username) {
wx.showToast({
title: '用户名不能为空',
icon: 'none'
});
return;
}
if (!formData.password) {
wx.showToast({
title: '密码不能为空',
icon: 'none'
});
return;
}
// 提交表单数据到服务器
wx.request({
url: 'https://api.example.com/login',
method: 'POST',
data: formData,
success: (res) => {
if (res.data.success) {
wx.showToast({ title: '登录成功' });
} else {
wx.showToast({
title: '登录失败',
icon: 'none'
});
}
}
});
}
})
二、数据获取与展示功能
1. 接口调用获取数据
通过 wx.request 从服务器获取数据并展示:
Page({
data: {
productList: []
},
onLoad() {
wx.request({
url: 'https://api.example.com/products',
method: 'GET',
header: {
'Content-Type': 'application/json'
},
success: (res) => {
this.setData({
productList: res.data
});
},
fail: (err) => {
console.error('请求失败', err);
}
});
}
})
2. 数据缓存与本地存储
使用本地存储 API 实现数据缓存:
// 存储数据
wx.setStorageSync('userSettings', {
theme: 'dark',
fontSize: 16
});
// 获取数据
const userSettings = wx.getStorageSync('userSettings');
if (userSettings) {
console.log('用户设置:', userSettings);
}
三、多媒体功能
1. 图片展示与操作
实现图片展示、选择、上传和预览功能:
<image src="{{imageUrl}}" mode="aspectFit" />
Page({
data: {
imageUrl: 'https://example.com/image.jpg'
},
chooseImage() {
wx.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success: (res) => {
this.setData({
imageUrl: res.tempFilePaths[0]
});
}
});
},
uploadImage() {
const filePath = this.data.imageUrl;
wx.uploadFile({
url: 'https://api.example.com/upload',
filePath: filePath,
name: 'file',
success: (res) => {
console.log('图片上传成功', res);
}
});
},
previewImage() {
wx.previewImage({
current: this.data.imageUrl,
urls: [this.data.imageUrl]
});
}
})
2. 音频与视频播放
实现音频和视频播放功能:
// 音频播放
Page({
onLoad() {
this.audioContext = wx.createInnerAudioContext();
this.audioContext.src = 'https://example.com/audio.mp3';
},
playAudio() {
this.audioContext.play();
},
pauseAudio() {
this.audioContext.pause();
}
})
<video src="https://example.com/video.mp4" controls></video>
四、用户相关功能
1. 用户登录与授权
实现微信登录和用户信息获取:
Page({
login() {
wx.login({
success: (res) => {
if (res.code) {
wx.request({
url: 'https://api.example.com/login',
data: { code: res.code },
success: (loginRes) => {
console.log('登录成功', loginRes.data);
}
});
}
}
});
},
getUserInfo() {
wx.getUserProfile({
desc: '用于完善用户资料',
success: (res) => {
console.log('用户信息:', res.userInfo);
}
});
}
})
2. 用户信息展示与修改
展示并更新用户信息:
Page({
data: {
userInfo: {}
},
onLoad() {
wx.request({
url: 'https://api.example.com/user/info',
success: (res) => {
this.setData({ userInfo: res.data });
}
});
},
updateUserInfo(e) {
const updatedInfo = e.detail.value;
wx.request({
url: 'https://api.example.com/user/update',
method: 'POST',
data: updatedInfo,
success: (res) => {
if (res.data.success) {
wx.showToast({ title: '信息更新成功' });
this.onLoad();
}
}
});
}
})
五、支付功能
1. 微信支付集成
实现小程序内微信支付功能:
Page({
pay() {
wx.request({
url: 'https://api.example.com/pay/order',
success: (res) => {
const paymentData = res.data;
wx.requestPayment({
timeStamp: paymentData.timeStamp,
nonceStr: paymentData.nonceStr,
package: paymentData.package,
signType: paymentData.signType,
paySign: paymentData.paySign,
success: (payRes) => {
console.log('支付成功', payRes);
},
fail: (payErr) => {
console.log('支付失败', payErr);
}
});
}
});
}
})
六、地图与位置功能
1. 获取用户位置与地图展示
获取并展示用户地理位置:
Page({
data: {
latitude: 0,
longitude: 0
},
getLocation() {
wx.getLocation({
type: 'gcj02',
success: (res) => {
this.setData({
latitude: res.latitude,
longitude: res.longitude
});
}
});
}
})
<map latitude="{{latitude}}" longitude="{{longitude}}" scale="16" style="width: 100%; height: 300px;"></map>
2. 查找附近地点
根据用户位置搜索周边地点:
Page({
data: {
nearbyPlaces: []
},
getNearbyPlaces() {
const { latitude, longitude } = this.data;
wx.request({
url: 'https://api.example.com/nearby',
data: {
latitude: latitude,
longitude: longitude,
radius: 1000
},
success: (res) => {
this.setData({
nearbyPlaces: res.data
});
}
});
}
})
七、分享功能
实现页面分享功能:
Page({
onShareAppMessage() {
return {
title: '精彩内容分享',
path: '/pages/index/index',
imageUrl: 'https://example.com/share.jpg'
};
},
onShareTimeline() {
return {
title: '分享到朋友圈啦',
query: '',
imageUrl: 'https://example.com/share.jpg'
};
}
})