JS和H5做一个音乐播放器,附带源码

JS和H5做一个音乐播放器,附带源码

http://mp.weixin.qq.com/s/KpXT9X46AMlUVXQvpHuXGQ

效果图:

JS和H5做一个音乐播放器,附带源码

实现的功能

1、首页

JS和H5做一个音乐播放器,附带源码

2、底部播放控件

JS和H5做一个音乐播放器,附带源码

3、播放页面

JS和H5做一个音乐播放器,附带源码

4、播放列表

JS和H5做一个音乐播放器,附带源码

5、排行榜

JS和H5做一个音乐播放器,附带源码

6、音乐搜索

输入搜索关键词,点击放大镜图标

JS和H5做一个音乐播放器,附带源码

7、侧边栏

JS和H5做一个音乐播放器,附带源码

目录结构

JS和H5做一个音乐播放器,附带源码

开发心得与总结

1、轮播图

首先感谢作者ShanaMaid/vue-image-scroll开源的代码,我把代码copy下来自己进行了一点修改(没有手指滑动效果),因为这是移动端,少不了的手指滑动切换,所以添加了vue-touch(偷偷告诉你,vue-touch的next分支还是支持vue2.0的)。

地址:https://github.com/hzzly/MagicMusic/blob/master/src/components/banner.vue

JS和H5做一个音乐播放器,附带源码

2、歌曲操作(喜欢,分享,加入播放列表)动画、播放列表展开与删除歌曲动画Vue提供了transition的封装组件,在下列情形中,可以给任何元素和组件添加 entering/leaving 过渡

  • 条件渲染 (使用 v-if)

  • 条件展示 (使用 v-show)

  • 动态组件

  • 组件根节点

JS和H5做一个音乐播放器,附带源码

transition-group一组过度动画,这里有个小坑的,之前看官网列表过渡的栗子,给每一项设置唯一的key值,一般都会用index。所以在做的时候就把index传给key,结果过渡老是不对,后来换成对应的item就正常了(生无可恋脸)。

3、直线进度条、弧形进度条

西班牙建筑大师曾说过:“直线属于人类,曲线则归于上帝”。在这里我大胆的使用了弧形来作为进度条,(几大热门音乐APP貌似还没有弧形进度条)。

这里我用到了Vue的绑定内联样式

JS和H5做一个音乐播放器,附带源码

4、本地存储

将一些数据缓存到localStorage,可以减少Http请求,从而优化页面加载时间。

在这个项目中首页歌曲列表以及搜索历史用到了本地缓存,拿搜索历史来举栗:

JS和H5做一个音乐播放器,附带源码

5、图片懒加载

使用了vue-lazyload插件

用法:

JS和H5做一个音乐播放器,附带源码

JS和H5做一个音乐播放器,附带源码

6、歌词滚动与高亮

因为api提供的歌词包括时间,如:

[03:57.280]原谅我这一生不羁放纵爱自由

所以首先要进行字符串切割:

JS和H5做一个音乐播放器,附带源码

然后在播放的监听事件中与播放的当前做对比:

JS和H5做一个音乐播放器,附带源码

到这就ok了

7、VUEX状态管理

推荐官方调试工具 devtools extension

之前看到好多人写的vuex,把整个项目的数据放到了一个state里,导致应用的所有状态集中到一个很大的对象。但是,当应用变得很大时,store 对象会变得臃肿不堪。

所以我建议(个人见解,轻喷):将 store 分割到模块(module)。每个模块拥有自己的 state、mutation、action、getters。这样方便管理与后期的维护。

车已到站✌️。

不知不觉写了这么多,老铁们凑合这看吧,觉得还行的可以点赞,需要完整代码练习的加群453833554: 已经上传到群文件。


JS和H5做一个音乐播放器,附带源码

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113860.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 位运算符的用法右移_位运算左移右移实例

    位运算符的用法右移_位运算左移右移实例前言:位运算符是用来对二进制位进行操作的c语言中有6种位运算符:&按位与|按位或^按位异或~取反<<左移>>右移本篇文章我们只讲左移和右移运算符,其他的会陆续在其他篇讲述左移:右移:总结:code:#include<iostream>intmain(){ autoi=11; //2进…

    2022年10月4日
    3
  • html5视频常用API接口「建议收藏」

    html5视频常用API接口「建议收藏」一、虽然有的属性是boolean类型,但仍旧建议按照XHTML书写(属性名=”属性值”)格式,避免出现错误(下面加粗的属性为常用属性)属性值功能描述controlscontrols是否显

    2022年7月3日
    84
  • windows搭建php环境_如何安装php环境

    windows搭建php环境_如何安装php环境使用apache+php+mysql的方式一、安装mysql1、下载mysql,下载地址:https://dev.mysql.com/downloads/installer/2、下载完成后解压我解压的路径是:D:\ProgramFiles\mysql-8.0.253、配置文件首先在解压的路径下查看是否含有my.ini的文件,如果没有则新建一个,内容如下:[mysqld]#设置3306端口port=3306#设置mysql的安装目录basedir=D:\ProgramFiles\

    2022年9月15日
    2
  • java删除文件,重命名文件

    java删除文件,重命名文件在做项目时,遇到需要对文件做一些删除重命名等操作。基于java语言,保存代码段如下。//文件重命名,缩小数据量,将对应的文件列为一张2维的表,方便对摘要文档等的操作 publicstaticbooleanrenameFile(Stringpath,Stringoldname,Stringnewname){ Fileoldfile=newFile(path+oldnam

    2022年4月30日
    44
  • SSL协议工作过程

    SSL协议工作过程SSL握手协议:在SSL记录协议之上,会话层之下,在实际的数据传输开始前,协商加密算法、交换密钥、身份认证1.客户端浏览器发送“hello”信息,表示要和网站建立安全SSL连接2.网站服务器响应客户端请求,发给客户端两样东西:网站服务器自己的证书(内含网站的公钥)、一个随机值3.客户端浏览器验证网站服务器证书是否可信4.客户端利用网站服务器发的随机值生成会话密钥5.客户端…

    2022年6月2日
    41
  • c# List去重

    c# List去重需求:对List集合中的元素去重。实现:有三种方式可以使用-使用Linq中distinct()方法-借助hashset-使用for循环遍历,这种方法在数据量大时,运行速度比较慢代码示例使用distinct()//使用distinct()List<string>lst1=newList<string>(){“as”,”lio”,”sdrf”,”asd”,”lio”};varr.

    2022年5月9日
    310

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号