【微信小程序】音乐播放小程序

效果展示

 

 项目总结

  •  请求数据的方式采用wx.request(),将其封装称为一个Promise对象
export default (url, data={}, method = "GET") => {
    return new Promise((resolve, reject) => {
        wx.request({
            url: config.host + url,
            data,
            method,
            header: {
                cookie: wx.getStorageSync('cookies')?wx.getStorageSync('cookies').find(item => item.indexOf('MUSIC_U') !== -1):''
            },
            success: (res) => {
                if(data.isLogin) {
                    wx.setStorage({
                        key: 'cookies',
                        data: res.cookies
                    })
                }
                resolve(res.data)
            },
            fail: (err) => {        
                reject(err)
            }
        })
    })
}
  • 通过在app.js中定义全局属性,将是否有音乐在播放记录下来
App({
  globalData: {
    isMusicPlay: false, // 是否有音乐在播放
    musicId: '' // 音乐id
  },
})
  •  页面之间的相互通信采用pubsub-js,订阅事件与发布事件。歌单页面首先订阅播放页面发布的消息,得到一个变量是选择下一首还是上一首,然后将下一首或者上一首的歌曲的id发布给播放页面,播放页面订阅歌单页面发来的歌曲id,从而请求这首歌的播放数据

 歌单页面

PubSub.subscribe('switchType', (msg, type) => {
    PubSub.publish('musicId', musicId)
}

 播放页面

PubSub.subscribe('musicId', (msg, musicId) => {})
PubSub.publish('switchType', type)
  •  搜索功能则采用节流的方式,一直发送请求,isSend初始值为false,会发送一次请求,300毫秒之内如果用户再次输入则直接return不会到this.getSearchList()发送请求
handleInputChange(event) {
    this.setData({
        searchContent: event.detail.value.trim()
    })
    if (isSend) {
       return
    }
    isSend = true;
    this.getSearchList();

    setTimeout(() => {
        isSend = false;
    }, 300)

},

 项目源码

 gitee地址:https://gitee.com/tao-yuhan/smart-music.git

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boboj1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值