前言

 http://blog.shanamaid.top/2017/03/21/vue仿163musicPC端/

vue2越来越受欢迎,无奈现在在公司做的平台是以ng1.x为主,一直没有机会练手vue2,虽然写过一些小demo,但是与完整的项目相比较中间会少很多东西。于是趁在公司空闲的时候以及周末双休,自己用vue2复写了163musicPC端。相比较之掘金上大大写的很多都是纯静态页面vue2,实际开发中肯定会涉及到接口、数据渲染方面,本项目接口通过http-proxy-middleware, 一个http代理的中间件,进行http请求转发,实现跨域请求,直接复用网易爸爸的接口,在服务端对返回的JSON进行解构即可。

介绍

vue-163-music(网易云音乐web版),用vue仿写163音乐客户端版。

原计划仿写完所有页面,碍于网易的接口API有限,实现页面也有限。

不推荐手机端访问。

页面高度为670px1366 X 768分辨率及其以下按F11全屏浏览效果更佳

Github项目地址:https://github.com/ShanaMaid/vue-163-music

欢迎issueprstar 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 + vuexvue-router + vue-resource

express

http-proxy-middleware 一个http代理的中间件,进行http请求转发,实现跨域请求

store.js 一个非常棒的处理localStorage的轮子,原生localStorage只支持存储字符串类型,轮子进行封装后可以直接存储ArrayObjectfunctionSet等类型

animate.css css动画库

vue-slider-component 滑块组件

postman 接口测试工具

实现功能

发现音乐

播放音乐

音乐搜索

输入搜索关键词,回车键搜索,或者点击放大镜图标

歌单

播放列表

一些问题

通过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能如此之火自然有它的道理。

如果觉得本项目不错的话,别忘记star哦!

vue仿163musicPC端相关推荐

  1. vue仿PC端163music图片滚动组件

    介绍 这是一款模仿PC端网易云音乐的vue图片滚动插件 http://blog.shanamaid.top/2017/03/03/vue%E4%BB%BFPC%E7%AB%AF163music%E5% ...

  2. vue仿移动端音乐播放器

    工作之余查了很多资料一步步摸索出来的,先感谢各位大佬. 仿QQ音乐做的,不是100%还原,不过基本原理都在这了,结合之前的歌词滚动组件一起使用 页面布局拆分 总体分为 1顶部歌名+歌手的top-bar ...

  3. Vue仿移动端喵喵电影项目解析

    项目预览地址:https://huyiling1111.gitee.io/myproject github源码地址:https://github.com/huyiling1111/myproject. ...

  4. vue仿移动端京东搜索历史自适应长度超两行折叠功能

    1.根据文本自适应宽度 2.标签超出两行显示两行 3.展开收起箭头按钮永远置于末位,若只有两行则箭头按钮隐藏,若超出两行,将箭头符号置于第二行的末位 效果如下图所示: <!-- 分组 --> ...

  5. vue仿小红书移动端开发

    vue仿小红书移动端开发 这是在项目实训中所作的界面功能展示 技术部分: 前端网页使用的是vue3和vant框架 后端使用的是Tomcat.javaweb servlet 数据库使用的是mysql8 ...

  6. html仿微信滑动删除,使用Vue实现移动端左滑删除效果附源码

    左滑删除在移动端是很常见的一种操作,常见于删除购物车中的商品,删除收藏夹中文章等等场景.我们只需要手指按住要删除的对象,然后轻轻向左滑动,便会出现删除按钮,然后点击删除按钮即可删除对象. 点击下载源码 ...

  7. Vue仿饿了么app项目总结

    前言 这是我的第一个基于Vue项目的作品,目的是把之前的前端知识累积加上目前流行的前端框架,以项目的形式展示出来. 大家在学习Vue的时候,可以将此项目作为学习Vue框架的一个模板 Vue仿饿了么ap ...

  8. vue仿今日头条_Vue仿今日头条实例详解

    前言 vue也弄了一段时间了,前段时间一直想用vue写个移动端,加之年底也不是很忙,于是前几天便着手开始弄了,到今天为止也算是勉强能看了 因为也是纯粹的写写前端页面,所以数据方面用的是mock.js, ...

  9. 使用VUE仿写【E宠商城】踩坑点

    使用VUE仿写[E宠商城]踩坑点 1.无论是否是否写了!important 父元素的规则 都是被子元素继承的 继承的样式优先级小 所以这边的字体大小还是保留reset那边的样式!!! 2.canvas ...

  10. vue 仿今日头条_vue实现仿今日头条首页选项卡的功能 -

    ...的 Web 界面.当和其它网络工具配合使用时,Vue.js 的优秀功能会得到大大加强.如今,已有许多开发人员开始使用 Vue.js 来取代 Angular 和 React.js .那么对于 An ...

最新文章

  1. 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  2. java 接口参数验证_SpringBoot实现通用的接口参数校验
  3. Apache常见功能实战详解
  4. 小心robots.txt影响蜘蛛的爬行
  5. java实现二进制转16进制
  6. 在余额宝里放30万,每天在家什么都不干,利息够生活吗?
  7. MySQL社区介绍_mysql社区服务器
  8. 【Java】 剑指offer(27) 二叉树的镜像
  9. [设计模式]观察者模式
  10. 程序员的生活照,最后一个绝了!有同感吗?
  11. 100-days: nineteen
  12. Ubuntu 18.04 ibus安装配置中文拼音输入法
  13. html录音并调用讯飞语音接口,微信小程序前台调用讯飞语音识别接口
  14. idea报错:fatal: –author ‘user@mail.com’ is not ‘Name ’ and matches no existing author
  15. 直线与直线、直线与圆、直线与矩形的交点
  16. [数理工程学] 梅花易数-[宋]邵雍 宋抄本影印
  17. 怎么从网上办大流量卡呢?具体步骤小编都给你写好的!
  18. 【汇正财经】证券市场的基本功能有哪些?
  19. Selenium的PO模式(Page Object Model)|(Selenium Webdriver For Python)
  20. [扩展阅读] EasyGUI 学习文档【超详细中文版】

热门文章

  1. 微信短信显示服务器解包异常,图解微信常见帐号异常处理办法
  2. 微信美团服务器异常怎么回事,美团行为存在异常怎么解决?美团账号异常怎么回事...
  3. FairyGUI笔记 :MovieClip(三)
  4. docker学习之docker hub寻宝游戏
  5. 纪念一下获得十大优秀学生
  6. XDOJ 317 输出完全二叉树的某一层
  7. 央视国际节目定价发布接口规范C2
  8. c语言在内存存储结构,C语言中float,double类型,在内存中的结构(存储方式)
  9. Android跳转小项目-CHANGE页面-Recycylerview、List、Context(二)
  10. IMS:InputChannel通过socket发送Input给App