云音乐小程序



项目概述


  该项目是基于微信小程序技术实现的云音乐小程序,原项目出自“尚硅谷”于2020年发布的小程序视频教程,项目开发目的是为了在短期内快速上手小程序课程知识,熟悉小程序开发流程。开发需求是利用网易云音乐官方接口,实现一个类似网易云音乐的音乐小程序。


  该项目在原项目的基础上进行了部分优化:增添了拖动进度条改变播放时长功能,修复了无法获取每日推荐歌单接口数据和无法获取视频接口数据的bug,将视频中实习搜索功能的节流函数修改为防抖函数,对视频页增添了刷新加载窗口,在request.js中配置了cookie属性。


  附视频链接:尚硅谷微信小程序开发(零基础小程序开发入门到精通)_哔哩哔哩_bilibili



前端 WXML + WXSS + JS + Iconfont
后端 NodeJS + NatApp
数据库 网易云音乐官方数据库
服务器 网易云音乐官方服务端
开发工具 Visual Studio Code + 微信开发者工具
项目启动 2023.09.11
项目完成 2023.09.29
项目类别 课程项目


功能和特性


  • 登录功能


  • 轮播图、歌单、热歌榜滑动效果


  • 获取音乐排行榜


  • 获取每日推荐歌单,播放歌单音乐


  • 获取多个标签视频,播放视频页内视频


  • 对视频页内的搜索记录进行查看和删除


  • 实现内网穿透,可以真机调试




  • 主页未完善


  • 个人主页未完善


  • 没有实现注册接口


  • 视频页搜索功能在搜索后无法跳转至关键词


  • 歌单和热歌榜的音乐点击后不跳转至音乐详情页


  • 获取歌单和视频时会发送多次请求,容易造成网络堵塞


  • 网易云音乐官方服务器繁忙时,无法获取歌单数据或视频数据



技术架构


项目目录

  • CloudMusic_Study包:项目目录

  • NeteaseCloudMusicApi包:服务器目录

  • miniprogram_npm包:实现微信开发者工具中构建npm

  • node_modules:npm包

  • app.json:小程序全局配置,例如顶部标题和背景色配置,页面配置等


    code包


components包

  • NavHeader包:导航栏组件,用于实现主页的推荐歌单和热歌榜

components包


otherPackage包

  • other包:other页面

otherPackage包


songPackage包

  • recommendSong包:每日推荐页面
  • songDetail包:音乐详情页面

songPackage包


pages包

  • index包:主页面
  • login包:登录页面
  • personal包:个人中心页
  • search包:搜索页面
  • video包:视频页面

pages包


static包

  • iconfont包:iconfont图标CSS样式引用路径
  • images包:存放每个页面需要用到的图片

static包


template包

  • myTemplate包:other页面用到的组件测试页面,

template包


utils包

  • config.js文件:配置服务器相关信息,包括主机地址和内网穿透地址
  • request.js文件:发送ajax请求的封装函数

utils包



关键问题与挑战


【教程缺陷】教程没有给出服务器源码


  • 自行到网易云音乐NodeJS接口官网下载对应npm包


【教程缺陷】教程内的/playlist接口失效,无法获取到热歌榜的接口数据


  • 网易云修改了接口地址,更改请求地址为/toplist并进行遍历/playlist/detail地址后成功获取热歌榜歌单


【教程缺陷】教程内的视频接口失效,获取视频列表数据后视频不显示


  • 网易云修改了视频接口地址,通过遍历/video/url获取视频链接后,添加到data中后成功显示视频内容


【自我拓展】视频下拉刷新后没有变化


  • 获取视频接口的数据,选取500页,每次刷新时对500页的数据进行随机请求即可在刷新后产生随机视频


【教程缺陷】教程内的搜索功能节流函数有误,输入内容搜索时,只会显示上一次请求


  • 将节流函数修改为防抖函数,在300ms内没有输入内容则发送一次请求


【自我拓展】教程内的音乐详情页进度条效果用CSS实现,无法实现拉动进度条控制播放效果


  • 废除原方案,将进度条改为微信的Slider组件,成功实现进度条控制播放



成果与效益



小程序功能演示


开发总结


  这次开发时间耗时较长,因为前半个月连续做完了后台管理系统和个人博客,所以心态就有点放松了,想着九月再做一个项目就行,加上作业什么的也得补补,所以就拖到月末才完工。截止到目前为止已经做了三个项目,开发经验越来越丰富了,接下来可以稍微放一放项目开发,继续学习新技术了。


  这个十月打算开始学习Spring框架和TypeScript,然后再做两个项目吧,还是得多练,直接上手项目真的进步非常快。然后十一月的话看看八股文,复习一下知识。十二月准备考试,然后看看能不能捞个寒假实习叭。


  继续加油!现在的目标是找到实习!!