通过vue完成一个简易的网易云音乐播放

604 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 24 天,点击查看活动详情

前言

前段时间在进行应用开发实训,实训结果就是制作一个网易云app,这个app后端接口部分暂时我们使用老师给的,后期找机会再说后端问题。使用本文是纯前端内容。

介绍项目。

首页 image.png

详情页面

image.png

播放界面:

image.png

image.png

搜索界面 image.png

静态界面部分。

其实关于页面布局,我一般是把页面进行方块划分,然后再定义盒子。

比如首页,他可以分三个部分,轮播图,搜索框和榜单。

轮播图实现,最简单的是给需要轮播的图片进行重命名,保证他们只有最后一个数字不一样,然后调用函数进行照片切换。 image.png

那么下面搜索框,其实就是一个div盒子给了一个border(边框)。

至于后面榜单,范畴左右两部分,左边里面有两个盒子,一个代表文字xx榜,一个代表文字刚刚更新。关于xx榜单还有里面有什么音乐,并不是写定的,而是根据接口数据变化的。不过这里我们只写静态,就不需要考虑那么多。

关于播放页面,分上中下三部分。上标识歌曲名字,中是主体部分,一个是图片,一个是歌词,可以通过轮播图来书写。下面是一个进度条,时间和上一首下一首暂停播放的图片。

因为使用的uniapp书写,所以歌词图片切换代码如下

image.png

如何拿到动态数据

接口:

首页获取榜单
http://47.108.157.232:8889/getRankList

搜索页面的热搜歌曲的歌名
http://47.108.157.232:8889/getRecommend

由热搜歌名得到歌曲列表
url: 'http://47.108.157.232:8889/getMusicList?title=海的女儿'


视频数据
http://47.108.157.232:8889/getVideoList

某一类榜单的所有歌曲
http://47.108.157.232:8889/getRankInfo?id=1

//mp3播放页面  为进度条获取duration currentTime
https://music.163.com/song/media/outer/url?id=1410647903

//获取歌词信息
http://47.108.157.232:8889/getMusicInfo?id=1410647903

首先,怎么在前端拿到数据?可以通过发送Ajax请求,请求模板如下:

image.png

url里面就可以书写上面接口地址。console下面可以把数据接收。通过this.xxx=res.data;然后在html里面通过{{xxx}}拿到数据进行渲染。

怎么渲染?我们以首页为例子。

先在浏览器地址栏输入地址,拿到如下数据。

image.png

在榜单栏那里,进行循环。

image.png

然后就能通过item.属性进行相关渲染。

那么在第二个页面里面,如果不想重新申请数据也可以通过定义缓存拿到数据。

设置缓存 image.png

取出缓存 image.png

关于播放界面,怎么拿到每一首歌曲的具体时间?

image.png

补充:关于vue十个指令

10个指令:

v-test 作用:替换标签里的文本内容

v-html 作用:将标签内容替换成标签

v-show 满足条件就显示

v-if、v-else-if、v-else和if else用法类似

v-for 遍历数组对象字符串

v-model 双向榜单数据(即和xx榜单后,前台修改xx,数据项里面的xx也会改变)

v-on 绑定事件监听,可简写为@

v-bind 单项绑定解析表达式,可简写为 :xxx