vue开发的音乐web-app

已经成功部署线上啦~,音乐web-app
源码在这,小妹在此求个star

项目描述

vue全家桶开发仿网易云音乐的web-ap

show.jpg

项目目的

学习vue的项目实战课程,认识到了很多关于模块化开发思想,复用代码,vue等知识点,继续努力加油!

前台

  • vue 前台用户界面展示
  • vue-router 为单页面提供路由系统,使用路由懒加载实现组件的异步加载
  • vuex Vue组件数据状态共享
  • axios 异步请求api数据
  • es6 箭头函数,解构赋值,class类...
  • localStorage 搜索记录存储
  • Eslint 代码规范

后台

  • NeteaseCloudMusicApi: 网易云音乐NodeJs版Api,为项目提供音乐数据

使用的库:

  • better-scroll: 实现移动端滚动需求
  • fastclick: 消除移动端点击事件的300ms延迟
  • border.css: 消除Retina屏幕 1px border 在不同dpr下的显示
  • pinyin: 取歌手数据首字母
  • vue-lazyload: 实现图片的懒加载

实现的功能

导航分成四个区块:首页 | 独家歌手 | 排行榜 | 搜索
首页
  • 图片轮播
  • 推荐歌单组件
独家歌手
  • 获取热门歌手
  • 头字母索引导航
  • 顶部显示当前字母索引
排行榜
  • 获取热门歌单
  • 上拉更新
搜索
  • 热门搜索关键词
  • localStorage保存搜索历史
  • 输入字符串获取搜索数据(此处用到函数节流)
  • 下拉加载
其他页面
歌手详情页 | 歌单详情页
  • 随机播放歌手全部歌曲
  • 可添加歌手歌曲到播放列表
播放器内核
  • 暂停开始播放
  • 前后切换歌曲
  • 显示播放列表
  • 可切换播放模式( 随机播放, 顺序播放, 循环播放)
  • 拖动或点击播放进度条跳到指定时间
  • 从后台获取歌词进行解析
  • 播放当前歌词居中显示高亮

项目遇到的一些问题

在播放器上遇到的坑最多,最复杂也是这个,所以说说吧~

  • 关于HTML5 的 audio标签
    当不断触发切换歌曲的时候,audio会报错:Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause(). 或者是
    Uncaught (in promise) DOMException: The play() request was interrupted by a new load request.
    大致的意思是play() 请求被 pause() 或者 新的加载请求中断
    原因:audio的 play() 方法调用会返回Promise,如果成功,Promise就会执行并且audio的playing同时触发事件,如果播放失败,Promise就会拒绝,显示失败原因
    解决:既然返回的是promise对象,那就可以用then方法来选择播放媒体准备之前,播放功能不会执行
    其他方法:
  1. 监听audio的loadedmetadata事件,判断在完全音频的元数据加载完毕之后才触发播放功能
  2. 监听audio的canplay事件,确保在已经有足够的媒体数据才触发播放功能
    参考文章
    https://developers.google.com/web/updates/2017/06/play-request-was-interrupted
    https://developer.mozilla.org/zh-CN/docs/Web/Guide/Events/Media_events
  • ref是的渲染事件以及不是响应式
    要取得$refs必须在dom渲染完毕的时候才能获取,所以可以在mounted 钩子或者nextTick()的回调函数中获取,但是如果碰到的ref是动态渲染的,也就是数据是由父组件通过异步获取数据(data)传递给子组件的时候才会渲染相关的dom节点,在这种情况下,可以使用watch对象,观察data的变化情况,在这个回调函数中便能获得ref数据;ref不是响应式的,所以如果动态添加相关的ref的节点,添加的节点的索引会出现在尾端,所以只能通过this.$refs去获取这些节点数组的父元素,通过$el.children获取所有子dom节点

  • audio标签在移动端首次点击歌曲不能自动播放的问题
    原因:移动端为了省用户流量,会对自动播放音频,视频做限制,所以当第一次播放audio的时候只能由用户手动触发audio.paly()事件才能播放
    解决:思前想后,第一,在各种生命周期钩子里使用audio.play()是没用的,原因的获取歌曲的相关数据(url 等)这些都是异步行为,第二,使用autoplay="autoplay"也没有效果;
    网上提供的解决方法:(一种hack做法 ,,ԾㅂԾ,,)
    绑定一次touchstart()事件,当用户触摸屏幕时,回调中调用audio.play()方法

项目总结

第一次这么系统的完成一个作品,不过还有很多功能没有完善,后期再继续完善完善,例如用户登陆功能,用户评论。。。立个flag先。。。在整个学习过程中,学到了很多关于移动端开发的东西,包括布局方面(更加加深了弹性布局和定位布局相关知识点),前后端的分离,前端如何获取数据转换成需要的数据等等,再遇到问题的时候,应该先找到问题根源,然后多查查着相关资料,出现问题的原因,想想解决办法,多试试看能不能,再考虑优化解决方法。。。

可以扫码观看啦~

A Vue.js project

Build Setup

# install dependencies
npm install

# serve with hot reload at localhost:8080
npm run dev

# build for production with minification
npm run build

# build for production and view the bundle analyzer report
npm run build --report

For a detailed explanation on how things work, check out the guide and docs for vue-loader.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容