《我的》页面
json 文件
1 2
| "navigationBarTitleText": "我的", "disableScroll": true
|
导航页面链接跳转
navigator
背景图片
wxss 背景图片不支持本地相对路径的图片,只支持网络图片和 base64 图片
建议使用 base64 图片,图片文件最好不要太大。
每个页面都有的 page 标签
1 2 3
| page { background-color: #f1f1f1; }
|
播放历史与本地存储
方案一:播放历史存储在数据库当中,这样在不同设备访问都可查看播放历史。读取速度相对较慢
方案二:播放历史存储在本地,仅当前设备可查看播放历史。读取速度较快
本项目采用本地存储:
使用 openid 作为本地存储的 key,播放历史存入 value
在 app.js 中获取 openid,即打开小程序就获取 openid。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| onLaunch: function () { this.getOpenid() }, getOpenid() { wx.cloud.callFunction({ name: 'login' }).then((res) => { const openid = res.result.openid this.globalData.openid = openid if (wx.getStorageSync(openid) == '') { wx.setStorageSync(openid, []) } }) }
|
歌曲播放时
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| savePlayHistory() { const currentSong = musiclist[nowPlayingIndex] const openid = app.globalData.openid const playHistory = wx.getStorageSync(openid)
for (let i = 0, len = playHistory.length; i < len; i++) { if (playHistory[i].id === currentSong.id) { playHistory.splice(i, 1) break } }
playHistory.unshift(currentSong) wx.setStorage({ key: openid, data: playHistory })
},
|
播放历史页面获取
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| onLoad: function (options) {
const openid = app.globalData.openid const playHistory = wx.getStorageSync(openid)
if (playHistory.length !== 0) { this.setData({ playHistory }) wx.setStorage({ key: 'musiclist', data: playHistory, }) }
},
|
我的发现
代码分别演示了从云函数和小程序端获取数据,从小程序端获取数据享有权限管理的能力,不需要传 openid。
小程序码
获取小程序码
本项目演示使用接口 B:适用于需要的码数量极多的业务场景 云调用
的方式。
步骤:
1 2 3 4 5
| { "permissions": { "openapi": ["wxacode.getUnlimited"] } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| exports.main = async (event, context) => { const wxContext = cloud.getWXContext();
const result = await cloud.openapi.wxacode.getUnlimited({ scene: wxContext.OPENID, });
const upload = await cloud.uploadFile({ cloudPath: "qrcode/qrcode" + Date.now() + Math.random() + ".png", fileContent: result.buffer, });
return upload.fileID; };
|
判断是从扫码小程序码进入,以及参数获取
1 2 3 4 5
|
onLoad: function (options) { console.log(options.scene) }
|
版本更新检测
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| onLaunch: function(options) { this.checkUpate() }, checkUpate(){ const updateManager = wx.getUpdateManager() updateManager.onCheckForUpdate((res)=>{ if (res.hasUpdate){ updateManager.onUpdateReady(()=>{ wx.showModal({ title: '更新提示', content: '新版本已经准备好,是否重启应用', success(res){ if(res.confirm){ updateManager.applyUpdate() } } }) }) } }) },
|
性能优化
官网文档优化建议
使用开发者工具的调试器,Audits 进行评分,然后根据提示针对项目进行优化。
场景值 scene 的作用与应用场景
场景值
场景值用来描述用户进入小程序的路径。完整场景值的含义请查看场景值列表。
可根据不同场景进入实现不同业务处理,比如一个点餐小程序,店家内贴了小程序码,用户通过扫码进入,可立即进入点餐页面,等等
在 app.js 中的 onLaunch(options) 、onShow(options),options 包含 scene 场景值
开发者工具中,切后台,可模拟进入场景。
小程序的”SEO”—页面收录 sitemap
在 app.js 的同级目录下有 sitemap.json 文件,用于配置收录规则
stiemap 配置
作用:
使小程序搜索可根据小程序的内容进行搜索到
使用方法:
1、在微信公众平台,小程序信息 > 页面收录设置 > 打开 (默认是已开启)
2、打开 sitemap.json 文件,配置收录规则
1 2 3 4 5 6 7 8 9 10
| { "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", "rules": [ { "action": "allow", "page": "*" } ] }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| { "desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html", "rules": [{ "action": "allow", "page":"pages/player/player", "params": ["musicId","index"], "matching":'exact' },{ "action": "disallow", "page":"*", / }] }
|
小程序上线审核流程
微信公众平台,版本管理>把小程序上传为体验版》提交审核》上线