vue仿163musicPC端
前言
vue2越来越受欢迎,无奈现在在公司做的平台是以ng1.x为主,一直没有机会练手vue2,虽然写过一些小demo,但是与完整的项目相比较中间会少很多东西。于是趁在公司空闲的时候以及周末双休,自己用vue2复写了163musicPC端。相比较之掘金上大大写的很多都是纯静态页面vue2,实际开发中肯定会涉及到接口、数据渲染方面,本项目接口通过http-proxy-middleware
, 一个http代理的中间件,进行http请求转发,实现跨域请求,直接复用网易爸爸的接口,在服务端对返回的JSON进行解构即可。
介绍
vue-163-music(网易云音乐web版),用vue仿写163音乐客户端版。
原计划仿写完所有页面,碍于网易的接口API有限,实现页面也有限。
页面高度为670px
,1366 X 768
分辨率及其以下按F11全屏浏览效果更佳
Github项目地址:https://github.com/ShanaMaid/vue-163-music
欢迎issue
,pr
,star
or follow
!我将继续开源更多有趣的项目
在线版
点击进入 http://www.shanamaid.top:3000/
腾讯学生云主机,最低配,存在卡顿,建议clone到本地进行体验
使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
git clone https://github.com/ShanaMaid/vue-163-music.git
cd vue-163-music
npm install
# 开发环境
npm run dev
访问 http://localhost:8080/
# 打包
npm run build
# 实际环境
cd server
node app.js
访问 http://localhost:3000/
|
效果截图
工具&技能
vue
+ vuex
+ vue-router
+ vue-resource
http-proxy-middleware
一个http代理的中间件,进行http请求转发,实现跨域请求
store.js
一个非常棒的处理localStorage
的轮子,原生localStorage
只支持存储字符串类型,轮子进行封装后可以直接存储Array
、Object
、function
、Set
等类型
实现功能
发现音乐
播放音乐
音乐搜索
- 单曲(单击或双击歌曲添加至音乐播放列表,部分音乐会存在版权问题无法播放)
- 歌手
- 专辑
- MV
- 歌单(左键点击进入歌单列表)
- 主播电台 (单期节目部分单击或双击歌曲添加至音乐播放列表,目前不存在版权问题)
- 用户
歌单
播放列表
一些问题
通过api接口获取的mv播放量基本不准,尚未找到原因,其余类型的播放量准确
目录结构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
|
|—— build
|—— config
|—— server 服务端
| |—— app.js 服务端启动入口文件
| |—— static 打包后的资源文件
| |__ index.html 网页入口
|
|——src 资源文件
| |—— assets 组件静态资源库
| |—— components 组件库
| |—— deal 163api返回的JSON字符串解构
| |—— filters 自定义过滤器
| |—— router 路由配置
| |—— store vuex状态管理
| |—— App.vue 163SPA
| |__ main.js SPA入口
|
|__ static 静态资源目录
|
一些注意事项
项目中使用了网易爸爸的接口,需要使用http-proxy-middleware
进行转发,开发环境下需要在config/index.js
中的dev
中添加下列配置即可
1
2
3
4
5
6
7
8
9
|
proxyTable: {
'/api': {
target: 'http://music.163.com',
changeOrigin: true,
headers: {
Referer: 'http://music.163.com/'
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
var express = require('express');
var proxy = require('http-proxy-middleware');
var app = express();
app.use('/static', express.static('static'));
app.use('/api', proxy({
target: 'http://music.163.com',
changeOrigin: true,
headers: {
Referer: 'http://music.163.com/'
}
}
));
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
app.listen(3000);
|
对返回的数据解构js
文件位于src/components/deal/
目录下,比如对单曲搜索结果进行解构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
single: (data) => {
let list = []
let count = data.result.songCount
if (count === 0) {
return {list, count}
}
for (let item of data.result.songs) {
let singer = ''
let {
name,
mp3Url,
duration,
id,
album: {
name: albumName
}
} = item
for (let item of item.artists) {
singer += item.name + ' '
}
list.push({name, mp3Url, duration, id, albumName, singer})
}
return {list, count}
}
|
vuex
状态管理位于src/components/store
目录下
vue-router
路由配置管理位于src/components/router
目录下
自定义过滤器位于src/components/filters/
目录下
网易云音乐接口来源于http://moonlib.com/606.html
Github项目地址:https://github.com/ShanaMaid/vue-163-music
总结
本项目的实际意义在于熟悉vue生态链以及ES6语法,同时思考如何用vue构建实现一个完整的项目。
最后的感觉vue2在开发中带来的体验确实很棒,vue2能如此之火自然有它的道理。
vue仿163musicPC端相关推荐
- vue仿PC端163music图片滚动组件
介绍 这是一款模仿PC端网易云音乐的vue图片滚动插件 http://blog.shanamaid.top/2017/03/03/vue%E4%BB%BFPC%E7%AB%AF163music%E5% ...
- vue仿移动端音乐播放器
工作之余查了很多资料一步步摸索出来的,先感谢各位大佬. 仿QQ音乐做的,不是100%还原,不过基本原理都在这了,结合之前的歌词滚动组件一起使用 页面布局拆分 总体分为 1顶部歌名+歌手的top-bar ...
- Vue仿移动端喵喵电影项目解析
项目预览地址:https://huyiling1111.gitee.io/myproject github源码地址:https://github.com/huyiling1111/myproject. ...
- vue仿移动端京东搜索历史自适应长度超两行折叠功能
1.根据文本自适应宽度 2.标签超出两行显示两行 3.展开收起箭头按钮永远置于末位,若只有两行则箭头按钮隐藏,若超出两行,将箭头符号置于第二行的末位 效果如下图所示: <!-- 分组 --> ...
- vue仿小红书移动端开发
vue仿小红书移动端开发 这是在项目实训中所作的界面功能展示 技术部分: 前端网页使用的是vue3和vant框架 后端使用的是Tomcat.javaweb servlet 数据库使用的是mysql8 ...
- html仿微信滑动删除,使用Vue实现移动端左滑删除效果附源码
左滑删除在移动端是很常见的一种操作,常见于删除购物车中的商品,删除收藏夹中文章等等场景.我们只需要手指按住要删除的对象,然后轻轻向左滑动,便会出现删除按钮,然后点击删除按钮即可删除对象. 点击下载源码 ...
- Vue仿饿了么app项目总结
前言 这是我的第一个基于Vue项目的作品,目的是把之前的前端知识累积加上目前流行的前端框架,以项目的形式展示出来. 大家在学习Vue的时候,可以将此项目作为学习Vue框架的一个模板 Vue仿饿了么ap ...
- vue仿今日头条_Vue仿今日头条实例详解
前言 vue也弄了一段时间了,前段时间一直想用vue写个移动端,加之年底也不是很忙,于是前几天便着手开始弄了,到今天为止也算是勉强能看了 因为也是纯粹的写写前端页面,所以数据方面用的是mock.js, ...
- 使用VUE仿写【E宠商城】踩坑点
使用VUE仿写[E宠商城]踩坑点 1.无论是否是否写了!important 父元素的规则 都是被子元素继承的 继承的样式优先级小 所以这边的字体大小还是保留reset那边的样式!!! 2.canvas ...
- vue 仿今日头条_vue实现仿今日头条首页选项卡的功能 -
...的 Web 界面.当和其它网络工具配合使用时,Vue.js 的优秀功能会得到大大加强.如今,已有许多开发人员开始使用 Vue.js 来取代 Angular 和 React.js .那么对于 An ...
最新文章
- 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
- java 接口参数验证_SpringBoot实现通用的接口参数校验
- Apache常见功能实战详解
- 小心robots.txt影响蜘蛛的爬行
- java实现二进制转16进制
- 在余额宝里放30万,每天在家什么都不干,利息够生活吗?
- MySQL社区介绍_mysql社区服务器
- 【Java】 剑指offer(27) 二叉树的镜像
- [设计模式]观察者模式
- 程序员的生活照,最后一个绝了!有同感吗?
- 100-days: nineteen
- Ubuntu 18.04 ibus安装配置中文拼音输入法
- html录音并调用讯飞语音接口,微信小程序前台调用讯飞语音识别接口
- idea报错:fatal: –author ‘user@mail.com’ is not ‘Name ’ and matches no existing author
- 直线与直线、直线与圆、直线与矩形的交点
- [数理工程学] 梅花易数-[宋]邵雍 宋抄本影印
- 怎么从网上办大流量卡呢?具体步骤小编都给你写好的!
- 【汇正财经】证券市场的基本功能有哪些?
- Selenium的PO模式(Page Object Model)|(Selenium Webdriver For Python)
- [扩展阅读] EasyGUI 学习文档【超详细中文版】
热门文章
- 微信短信显示服务器解包异常,图解微信常见帐号异常处理办法
- 微信美团服务器异常怎么回事,美团行为存在异常怎么解决?美团账号异常怎么回事...
- FairyGUI笔记 :MovieClip(三)
- docker学习之docker hub寻宝游戏
- 纪念一下获得十大优秀学生
- XDOJ 317 输出完全二叉树的某一层
- 央视国际节目定价发布接口规范C2
- c语言在内存存储结构,C语言中float,double类型,在内存中的结构(存储方式)
- Android跳转小项目-CHANGE页面-Recycylerview、List、Context(二)
- IMS:InputChannel通过socket发送Input给App