All Projects → k-water → Vue Music

k-water / Vue Music

Licence: mit
Music Player for Vue.js

Projects that are alternatives of or similar to Vue Music

Vue Music
使用vue2.0构建音乐播放器
Stars: ✭ 60 (-81.48%)
Mutual labels:  jsonp, vue-cli, axios, vuex
D2 Admin
An elegant dashboard
Stars: ✭ 11,012 (+3298.77%)
Mutual labels:  vue-cli, axios, vuex
Vue Home
🏠 A simple project(Vue Community SPA) which bases on vue+vue-cli+vue-router+axios+ scss.
Stars: ✭ 256 (-20.99%)
Mutual labels:  vue-cli, axios, vuex
Iview Admin
Vue 2.0 admin management system template based on iView
Stars: ✭ 15,963 (+4826.85%)
Mutual labels:  vue-cli, axios, vuex
Ruoyi Vue Fast
(RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统
Stars: ✭ 107 (-66.98%)
Mutual labels:  vue-cli, axios, vuex
Vue Todos
vue最新实战项目教程,从零开始,一步一个脚印,循序渐进。跟着我一起学习vue吧!
Stars: ✭ 1,659 (+412.04%)
Mutual labels:  vue-cli, axios, vuex
Vue Zhihu Daily
🤓使用vue编写的练手的知乎日报WebApp(iOS版)
Stars: ✭ 285 (-12.04%)
Mutual labels:  vue-cli, axios, vuex
Vue Music
基于vue2.0的网易云音乐播放器,api来自于NeteaseCloudMusicApi,v2.0为最新版本
Stars: ✭ 855 (+163.89%)
Mutual labels:  vue-cli, axios, vuex
Vue Admin Template
a vue2.0 minimal admin template
Stars: ✭ 15,411 (+4656.48%)
Mutual labels:  vue-cli, axios, vuex
Vue Blog
🎉 基于vue全家桶 + element-ui 构建的一个后台管理集成解决方案
Stars: ✭ 208 (-35.8%)
Mutual labels:  vue-cli, axios, vuex
Nx Admin
👍 A magical 🐮 ⚔ vue admin,记得star
Stars: ✭ 2,497 (+670.68%)
Mutual labels:  vue-cli, axios, vuex
Xyy Vue
🎨基于vue+vue-router+vuex+axios+webpack开发的个人Demo《Qu约》
Stars: ✭ 1,316 (+306.17%)
Mutual labels:  vue-cli, axios, vuex
Egg Vue Webpack Boilerplate
Egg Vue Server Side Render (SSR) / Client Side Render (CSR)
Stars: ✭ 1,302 (+301.85%)
Mutual labels:  vue-cli, axios, vuex
Vue Admin Design
基于vue + elementUI的管理系统模板
Stars: ✭ 279 (-13.89%)
Mutual labels:  vue-cli, axios, vuex
Vue Admin
基于Vue2、element ui、vue-cli、vuex、vue-router、axios 、echarts后台管理系统demo. 权限管理,用户管理,菜单管理。无限级菜单,下拉树形选择框
Stars: ✭ 1,135 (+250.31%)
Mutual labels:  vue-cli, axios, vuex
Vue Cli Multi Page
基于vue-cli模板的多页面多路由项目,一个PC端页面入口,一个移动端页面入口,且有各自的路由, vue+webpack+vue-router+vuex+mock+axios
Stars: ✭ 145 (-55.25%)
Mutual labels:  vue-cli, axios, vuex
Ruoyi Vue
(RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统
Stars: ✭ 596 (+83.95%)
Mutual labels:  vue-cli, axios, vuex
Vue Admin Webapp
this is a admin project
Stars: ✭ 673 (+107.72%)
Mutual labels:  vue-cli, axios, vuex
Vue Cnode
🚀 基于vue3 function-based 构建cnode社区
Stars: ✭ 192 (-40.74%)
Mutual labels:  vue-cli, axios, vuex
Vue Admin
基于and-design-vue的vue后台管理系统模板
Stars: ✭ 226 (-30.25%)
Mutual labels:  vue-cli, axios, vuex

基于Vue.js的音乐播放器(Webapp)


概述

项目是基于Vue.js,成品是一个移动端的音乐播放器,来源于imooc的实战课程。自己动手实践并加以修改拓展。 项目的大致流程是Vue-cli构建开发环境,分析需求,设计构思,规划目录结构,开始编码。

视图层

  • 推荐页
  • 歌手页
    • 歌手详情
  • 歌曲排行榜
    • 排行榜详情
  • 搜索页
  • 用户中心

数据来源

所有数据都来自于QQ音乐,抓取自QQ的接口,大部分接口都是JSONP,抓取比较容易,其中一些接口限制了host,不能直接抓取,采用的方法是用axios代理,设置header,以此绕过host的限制。 PS:具体代码请看prod.server.js文件

技术栈

  • [x] Vue
  • [x] Vuex
  • [x] Vue-Router
  • [x] Vue-cli
  • [x] Stylus
  • [x] Axios
  • [x] ESlint

src目录结构

难点

player组件

讲一讲player 播放器组件,播放器组件可谓是整个项目的核心,当然数据处理和用户体验方面也是不简单的(逃。 播放器是全局组件,放在App.vue下面,通过Vuex传递数据,触发action提交mutation,从而使播放器开始工作。当然,其中的数据交互说复杂也不是很复杂,就是要花多点时间理解,player组件由多个基础组件构成,具体请看项目代码,下面上图

为了防止切换歌曲时点击速度过快导致歌曲播放错误,使用了audioonplayAPI,结合Vuex获取到数据,判断当前歌曲数据请求到才可以切换下一首歌曲,判断函数如下

 ready() {
   this.songReady = true
 }

数据处理

通过调用QQ音乐的JSONP接口,获取的数据并不能直接拿来用,需要做进一步的规格化,达到我们使用的要求,所以在这方面单独封装了一个class来处理这方面的数据,具体请看src/common/js/song.js

在请求JSONP的时候,用到了一个JSONP库,这个库代码十分简短,只有几十行,有兴趣的同学可以学习下。

使用时,就是将请求的参数拼接在请求url上,然后调用这个库的jsonp方法。所以,在此封装了两个函数,一个是将参数拼接在url上,另一个是将库里面的jsonp方法Promise化,方便我们使用,具体请查看src/common/js/jsonp.js

将请求的数据格式化后再通过Vuex传递,组件间共享,实现歌曲的播放切换等。

交互体验

该项目的很多地方都涉及到滚动,包括下拉滚动,下拉滚动刷新等。这里面用到了一个库(better-scroll),来实现所有涉及到的滚动,建议学习下它的API

其他动画包括了Vuetransition动画,路由之间切换时的简单动画,播放器打开时的动画,这个地方比较难,也比较好玩。

打开页面时的加载Loading效果,其实就是一个Loading组件,也比较简单。

为了减少流量,图片加载使用了懒加载的方式,滚动时再加载真实的图片。 具体效果请自身体验:)

效果

构建

开发环境

# install dependencies
npm install

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

# run e2e tests
npm run e2e

# run all tests
npm test

生产环境

# build for production with minification
npm run build
# run
node prod.server.js

总结

通过学习该项目,自己收获了许多,实践中也遇到了大大小小许多问题,通过断点调试等最终解决了,对我来说无疑是最大的鼓励,也希望能与大家一起学习。 完:)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].