模仿QQ音乐wap端

news/2024/11/25 21:30:29/

Net Music

https://github.com/ITch8/NetMusic

模仿QQ音乐wap端

实践中来学习Vue技术栈开发

效果图

体验

开发

技术栈

Vue + VueRouter + vuex + webpack + stylus + VueLazyload

views

  • 首页推荐
  • 歌手列表
  • 歌曲排行榜
  • 搜索页面
  • 歌手详情页
  • 电台详情页
  • 排行榜详情页
  • 音乐播放器

功能

  • 查看推荐歌单
  • 歌手排行
  • 播放歌曲列表(随机播放、单曲循环、顺序播放)
  • 歌曲排行榜

公用组件

  • Scroll
  • Slider(轮播图)
  • SongList(歌曲列表)
  • ProgressBar(进度条)
  • player

总结

知识点

1.抽象代码,自定义公用组件及做好组件复用  
2.vuex来管理播放器播放状态及播放内容  
const state = {singer:{},playing:false,fullScreen:false,playlist:[],sequenceList:[],mode:playMode.squence,currentIndex:-1
}
3.开发模式下使用webpack的devServe.proxy来实现跨域请求,抓取QQ音乐官网数据  
//例如 获取歌手列表//代理配置
'/api/getSingers':{target:'https://u.y.qq.com/cgi-bin/musicu.fcg',changeOrigin: true,bypass:function(req,res,proxyOptions){req.headers.referer='https://u.y.qq.com'req.headers.host='u.y.qq.com'},pathRewrite:{'^/api/getSingers':''}}
//请求
export function getSingerList() {const url = '/api/getSingers'const pdata = {g_tk: 5381,loginUin: 0,hostUin: 0,format: 'json',inCharset: 'utf8',outCharset: 'utf-8',notice: 0,platform: 'yqq.json',needNewCode: 0,data:JSON.stringify({"comm":{"ct":24,"cv":0},"singerList":{"module":"Music.SingerListServer","method":"get_singer_list","param":{"area":-100,"sex":-100,"genre":-100,"index":-100,"sin":0,"cur_page":1}}})}return	axios.get(url,{params:pdata}).then((res)=>{return Promise.resolve(res.data)}).catch((err)=>{console.log(err);})
}
4.使用混入 (mixins) 解决底部播放器出现时页面底部元素被遮盖问题  	
import {mapGetters} from 'vuex'
export const playListMixin = {
computed:{...mapGetters(['playlist'])
},
mounted(){this.handlePlayList(this.playlist)
},
activated(){this.handlePlayList(this.playlist)
},
watch:{playlist(newVal){this.handlePlayList(newVal)}
},
methods:{handlePlayList(){throw new Error('components must implement handlePlayList function')}
}
5.页面样式仿QQ音乐wap端,copy Style,更多注意力放在了功能开发上了  
6.歌词解析及播放是使用 lyric-parser  (去install lyric-parser即可,感谢其作者)

问题记录

  • 注意BetterScroll初始化时机。dom渲染完成之后,bscroll对父子容器高度进行计算
  • activated在keep-alive 组件激活时调用,来解决路由跳转新的组件,重新加载数据(而不是挂载在mounted上面)
  • QQ音乐的数据接口会一直在变动,若是接口访问错误要重新去QQ音乐官网抓取

使用

  • 安装
	npm install  
  • 开发运行
npm run dev  

TODO

  • 完善搜索页面功能
  • 添加播放列表管理页面
  • 优化

http://www.ppmy.cn/news/790749.html

相关文章

【学习笔记之MaxiPy 篇】获得图像

从摄像头获取图像 import sensor #导入内置的sensor(摄像头)库sensor.reset() #初始化摄像头 sensor.set_pixformat(sensor.RGB565) #默认都是用摄像头为RGB565格式 sensor.set_framesize(sensor.QVGA) #分辨率为 sensor.run(1) #开始运行 sensor.ski…

NO.44-----QQ音乐全站爬虫

一、目的 qq音乐提供免费在线试听,但是下载需要付费,通过开发爬虫,绕过付费环节,直接下载我们需要的歌曲。 二、方法 爬取对象是web端qq音乐,爬取范围是全站的歌曲信息,爬取方式是在歌手列表下获取每一位歌…

QQ音乐爬虫解析

QQ音乐爬虫解析 说明 说明 这个其实之前很久就写好了,但是一直没有公开,但是有朋友说想了解这个,我就将其公开 ---------------------------以下是原文内容------------------------------------------ 定位到的位置是这个地方 需要封装这…

c#实现qq音乐爬虫

c#使用控制台实现QQ音乐爬虫 对于如何分析我没有过程,因为网上很多dalao都有说明,以下是效果图 以下为完整代码 using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.IO; using System.Linq; using System.Net; using Sy…

Fedora 安装 QQ音乐

Fedora 安装 QQ音乐 参考: 在Fedora上安装QQ音乐 (非wine) 非常感谢 xianfengdesign 使用 Fedora 36 安装 QQ Music 1.1.4 Linux 版本 这是使用 Fedora 36 版本 安装 1.1.4 QQ音乐,其他版本不知道,囧 安装 alien …

python爬虫qq付费音乐_Python 应用爬虫下载QQ音乐

Python应用爬虫下载QQ音乐 目录: 1.简介怎样实现下载QQ音乐的过程; 2.代码 1.下载QQ音乐的过程 首先我们先来到QQ音乐的官网: https://y.qq.com/,在搜索栏上输入一首歌曲的名称; 如我在上输入最美的期待,按回车来到这个画面 我们首先要得到这些歌曲名称和其他一些信…

php获取qq音乐的api类,QQ音乐api接口梳理

声明:以下接口仅限于学习使用,严禁用于商业用途 推荐歌单 url: https://u.y.qq.com/cgi-bin/musicu.fcg?callback=recom3477297233556247&g_tk=1278911659&jsonpCallback=recom3477297233556247&loginUin=0&hostUin=0&format=jsonp&inCharset=utf8…

飞轮储能系统的建模与MATLAB仿真(永磁同步电机作为飞轮驱动电机)

简介 飞轮储能系统由于其高储能密度、高效率、轻污染的优点而越来越受到重视。飞轮储能系统以高速旋转的飞轮为依托,通过电力电子设备实现电能与动能的相互转化,从而在负载调峰、功率平抑、不间断电源等多领域都有很好的应用表现。 本文选用永磁同步电机…