云音乐小程序

需求分析

云音乐小程序,使用云数据库、官方接口nodejs获取音乐数据 系统主要包括以下三个模块:
(1)主页模块:有轮播图,每日推荐歌曲板块,other页面,排行榜板块,电台,直播板块,精心推荐,可以实现歌曲播放,电台播放,观看直播,查看活动等功能。
2)视频模块:有头部搜索,导航模块分为现场、翻唱、舞蹈等,下拉视频列表,对视频点赞、评论和更多,可以实现视频的观看,点赞,评论以及更多等功能。
3)个人中心模块:有登录验证(前端+后端),登录成功即跳转个人页面,有开通会员,查看消息、好友、改变个性装扮、收藏歌曲、我的电台、播放历史记录,点击头像更换用户头像等功能。

部分源码
index.js

// pages/index/index.js

import request from '../../utils/request'

// 存放所有排行榜完整数据
let allTopList = [];
// 排行榜swiper当前所处的current
let currentPage = 0;

Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 轮播图数据
    bannerList: [],
    // 推荐歌单数据
    recommendList: [],
    // 排行榜数据
    topList: [],
    // 提供给songDetail查询歌曲列表使用
    // musicListId: '',  // 下面定义了
    // 下面是保存从songDetail获得的数据
    // 当前播放歌单id
    musicListId: '',
    // 是否播放
    isPlay: false,
    // 是否显示开屏动画
    isStartShow: true,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: async function (options) {

    wx.hideTabBar()

    let bannerListData = await request('/banner', { type: 1 })
    // console.log(bannerListData);
    this.setData({
      bannerList: bannerListData.banners
    })

    // 获取推荐歌单数据
    let recommmendListData = await request('/personalized')
    // console.log(recommmendListData);
    this.setData({
      recommendList: recommmendListData.result
    })

    // 获取排行榜列表
    let toplist = await request('/toplist')
    toplist.list.splice(5)
    toplist = toplist.list
    // console.log(toplist);
    // 根据排行榜的id通过查询歌单查询排行榜详情
    // 查询5个排行榜,循环五次
    let index = 0
    let listItem = {};
    let topList = [];
    while (index < 5) {
      let topListData = await request('/playlist/detail', { id: toplist[index].id })
      // console.log(topListData.playlist.tracks);
      allTopList.push(topListData.playlist.tracks)
      listItem = { name: topListData.playlist.name, id: topListData.playlist.id, tracks: topListData.playlist.tracks.slice(0, 3) }
      index++;
      topList.push(listItem)
      this.setData({
        topList,
      })
      if (this.data.isStartShow == true) {
        this.setData({
          isStartShow: false
        })
        wx.showTabBar({
          animation: true
        })
      }
    }

  },

  // 跳转至每日推荐页面
  goToRecommend() {
    wx.navigateTo({
      url: '/pages/recommendSong/recommendSong',
    });
  },

  // 跳转至点击歌曲的详情页面
  async toSongDetail(event) {
    // console.log(event);
    let { song } = event.currentTarget.dataset;
    // await this.getPlayingMusicList(musiclist)
    wx.setStorageSync('playingMusicList', allTopList[currentPage])
    wx.navigateTo({
      url: '/pages/songDetail/songDetail?song=' + JSON.stringify(song)
    })
  },


  // 跳转至音乐列表页面
  toMusicList(e) {

    wx.navigateTo({
      url: '/pages/musicList/musicList?musiclistid=' + e.currentTarget.dataset.musiclistid
    })
  },

  // 跳转至搜索页面
  toSearch() {
    wx.navigateTo({
      url: '/pages/search/search'
    })
  },

  // 跳转至歌单广场页面
  goToMusicListSquare() {
    wx.navigateTo({
      url: '/pages/musicListSquare/musicListSquare'
    })
  },

  // 获取排行榜当前所处的页数
  getCurrentPage(e) {
    // console.log(e);
    currentPage = e.detail.current
  },

  // 跳转至推荐歌单页面
  getMoreRecommendMusicList() {
    wx.navigateTo({
      url: '/pages/recommendMusicList/recommendMusicList'
    })
  },
  
  // 跳转至排行榜页面
  goToRanking() {
    wx.navigateTo({
      url: '/pages/ranking/ranking'
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})

全部源码放在压缩包中,需要的自取:
链接: https://pan.baidu.com/s/1crohuINgo5lj2hjDzAvbaA?pwd=hevq 提取码: hevq
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

就是木子呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值