当前位置: 首页 > news >正文

active vue 路由样式保持_网易云音乐接口+vue全家桶开发一款移动端音乐webApp

网易云音乐接口+vue全家桶开发一款移动端音乐webApp

项目介绍

网易云音乐接口+vue全家桶开发一款移动端音乐webApp

项目还在develop中,感兴趣想要参与的小伙伴可以私我

效果图:

骨架屏

61f3bb3cf9a44ee6b837201edb0c479f.png

首页

b348931167b2699af7097e3a69c891dc.png

侧边栏

b06eb067778457179b69063d6246d254.png

每日推荐

ed114f3e7260847701454f3e20ea4f17.png

歌单

410eed679ddd41ab6b4fcd093687c1c1.png

播放器(小)

a93455937a74a18c2482d86f2597ab84.png

播放器(大)

0c9d1c1a9000037185347a7a271c04ef.png

详细信息

测试地址

开发总结

项目结构

vue-cli搭建

新增目录如下:

 ---src  ------api // 放置api的目录 ---------base.js // 放置axios的一些配置,接口域名地址,以及公共参数配置,与后台约定跨域的配置,全局loading配置等 ---------urls.js // 放置接口url  ---------api.js // 放置封装的promise请求 ------base // 放置一些基础组件  ------common  ---------js // 公共js  ---------sass // 公共样式 复制代码

类库使用

  • fastclick解决移动端300ms延迟
  • vux 快速构建一些常规页面
  • vue-lazyLoad 对图片进行懒加载处理
  • better-scroll 轮播图
  • NeteaseCloudMusicApi wy音乐接口,node封装转发,部署在自己服务器上

路由按需加载

 const view = (path, name) => () => import(`@/components/${path}${name}`)// 路由按需加载 //这边用的是vue异步组件的方式实现路由的按需加载 new Vue({ // ... components: { 'my-component': () => import('./my-async-component') } })复制代码
  • 路由加载时用了transition动画组件添加了一个切换动画
  • 注意如果你希望在 Vue Router 的路由组件中使用上述语法的话,你必须使用 Vue Router 2.4.0+ 版本。

播放器组件

大小播放器分别写了MiniPlayer.vue和NormalPlayer.vue两个组件,因为想要职责单一,就没有放在一起

  • 隐藏显示 通过vuex进行管理
  • 动画
  1. 头部下坠和底部的上浮
 /*css 样式*/// 给 transition下第一个元素显示或隐藏时添加的样式 //这两个类名都是定义开始到结束的持续时间 方式 以及延迟.example-enter-active{ transition:all 0.4s linear 对所有属性执行0.4s的动画 匀速}.example-leave-active{ transition:all 0.4s linear 对所有属性执行0.4s的动画 匀速}// 进入过度的开始状态 触发时机 元素被插入前 插入后下一帧移除.example-enter{}// 离开过度的结束状态 触发时机 example-leave下一帧 动画过度完成被移除.example-leave-to{} 可以使用碟中谍6中的halo跳伞来理解 .example-enter-active就是从飞机上离开到开伞的时间 .example-enter 下坠前在飞机上的最后一刻 .example-enter-to 开始下坠,具备加速度的那一刻  .example-leave-active 开伞到着陆的时间 .example-leave 开伞命令发出时 .example-leave-to 伞开下一刻复制代码
  1. 播放器的cd的位移及缩放
  2. 先计算出小播放器图片离最终大播放器cd的x,y轴上的距离
  3. 使用 create-keyframe-animation 进行一个css3动画状态的注册
  4. 再利用transition的动画方法钩子
  5. 在enter时run动画,afterEnter时清除动画 leave同理
  6. 播放器的旋转
  7. 定义一个旋转的css动画,在一个class中进行调用,在play的状态下给它addClss,pause时加上animation-play-state: paused

audio的使用

使用html5的 audio结合vuex来进行播放器功能的实现,包括进度条,播放,暂停,上一曲,下一曲,播放模式等

布局

  • 绝大多数使用了flex webpack中配置低版本安卓,ios加前缀
  • 考虑到fixed元素的移动端问题,在这种场景下,使用100%高度+absolute方案更适合
  • 使用媒体查询,兼容一下某些样式在768px以上的样式变形
  • 使用rem 在vue实例的mounted的钩子里注册resize和onload监听,进行最外层rem基准的计算
  • 使用骨架屏进行加载资源白屏时填充,待优化至完全的主页面服务端渲染

感谢

  • vue
  • vuex
  • vue-router
  • vux
  • vue-lazyLoad
  • NeteaseCloudMusicApi

说明

  • 有反馈说项目clone之后运行,会显示不了,因为接口用的我服务器上的地址,node端的是Access-Control-Allow-Origin是请求头里的orgin,所以建议clone接口库到本地运行,github中运行方式已作修改。
  • 很多功能尚未实现,很多地方待优化,有时间就写点吧.^-^

github地址欢迎star.

相关文章:

  • matlab求kcf算法响应图_1周学FFT——第5天 时间抽选奇偶分解基-2 FFT算法
  • xlwt追加写入_python3中关于excel追加写入格式被覆盖问题(实例代码)
  • 地图上的标签为图片_三种方式制作数据地图
  • arcengine 将一个shp的数据读取到另一个shp_从零开始,构建电子地图网站:0_3_数据处理python(1)...
  • python极简主义_极简主义的践行者:一行python有哪些玩法?
  • idea中maven找不到本地仓库jar包_Mac Intellij Maven使用本地仓库的jar包
  • mysql默认安装目录 linux_关于Linux安装mysql默认配置文件位置详解
  • jquery mysql实现加入购物车_jquery-实现加入购物车效果
  • mysql 查询最近7天 时间戳数据_mysql查询今天、昨天、7天、近30天、本月数据
  • 景安mysql主机_景安国内虚拟主机空间如何创建数据库
  • mysql新手问题大全_初学者必读:MySQL数据库常见问题汇总
  • qopenglwidget 拖动窗口时图形消失_CAD画图时鼠标原来是这么用的!
  • mysql root 赋权_mysql 里对root及普通用户赋权及更改密码的一些命令
  • freebsd linux mysql_怎样在linux或unix服务器上安装、使用MySQL
  • mysql eav_检索MySQL EAV结果作为关系表的最佳性能是什么
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • 08.Android之View事件问题
  • Android组件 - 收藏集 - 掘金
  • chrome扩展demo1-小时钟
  • Less 日常用法
  • Markdown 语法简单说明
  • Python利用正则抓取网页内容保存到本地
  • Rancher如何对接Ceph-RBD块存储
  • 记录:CentOS7.2配置LNMP环境记录
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 十年未变!安全,谁之责?(下)
  • 使用common-codec进行md5加密
  • 数据可视化之 Sankey 桑基图的实现
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 我建了一个叫Hello World的项目
  • 责任链模式的两种实现
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • PostgreSQL之连接数修改
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (16)Reactor的测试——响应式Spring的道法术器
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (初研) Sentence-embedding fine-tune notebook
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (力扣题库)跳跃游戏II(c++)
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (一)UDP基本编程步骤
  • (转)关于pipe()的详细解析
  • (轉貼) UML中文FAQ (OO) (UML)
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .gitignore
  • .NET 发展历程
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .net连接MySQL的方法