18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > 【个人练习】网易云音乐PC端仿站 Vue 2(一)

【个人练习】网易云音乐PC端仿站 Vue 2(一)

时间:2023-04-23 21:45:02 | 来源:网站运营

时间:2023-04-23 21:45:02 来源:网站运营

【个人练习】网易云音乐PC端仿站 Vue 2(一):

目录

【个人练习】网易云音乐PC端仿站 Vue 2(一)

【个人练习】网易云音乐PC端仿站 Vue 2(二)

【个人练习】网易云音乐PC端仿站 Vue 2(三)

【个人练习】网易云音乐PC端仿站 Vue 2(四)

【个人练习】网易云音乐PC端仿站 Vue 2(五)

【个人练习】网易云音乐PC端仿站 Vue 2(六)

【个人练习】网易云音乐PC端仿站 Vue 2(七)

1 项目介绍

说明:使用Vue2实现网易云音乐PC端主要页面及基本交互功能。

主要实现的页面及模块:

技术栈:

  1. vue 2
  2. vue-cli (项目脚手架)
  3. axios (请求接口)
  4. vuex (状态管理)
  5. vue-router (路由)

2 创建项目

  1. 使用脚手架创建项目
vue create netease-music2.配置vue.config.js文件

const { defineConfig } = require('@vue/cli-service')module.exports = defineConfig({ transpileDependencies: true, devServer: { open: true, // 运行项目时自动打开页面 host: 'localhost', // 设置打开地址为localhost:8080 }})3. 运行项目

npm run serve4. 网易云音乐API安装及运行

https://binaryify.github.io/NeteaseCloudMusicApi/#/

安装:

git clone git@github.com:Binaryify/NeteaseCloudMusicApi.gitcd NeteaseCloudMusicApinpm install运行:

node app.js出现 server running @ http://localhost:3000 即可。

3 路由设计

路径组件(功能)嵌套级别
/home发现音乐(首页)1级
/home/discover首页-推荐2级
/home/toplist/:id首页-排行榜2级
/home/playlist首页-歌单2级
/home/djradio首页-主播电台2级
/home/artist首页-歌手2级
/home/album首页-新碟上架2级
/my我的音乐1级
/my/artist我的音乐-我的歌手2级
/my/mv我的音乐-我的视频2级
/my/radio我的音乐-我的电台2级
/my/playlist/:id我的音乐-创建/收藏的歌单2级
/friend关注1级
/album/:id专辑页面1级
/playlist/:id歌单页面1级
/artist/:id歌手页面1级
/artist/song歌手-热门作品2级
/artist/album歌手-所有专辑2级
/artist/mv歌手-相关MV2级
/artist/desc歌手-艺人介绍2级
/song/:id歌曲页面1级
注:使用scrollBehavior,使得路由切换时,页面滚动条返回顶部。

import Vue from 'vue'import VueRouter from 'vue-router'Vue.use(VueRouter)// 路由配置const routes = [ { path: '/', redirect: '/home/discover' }, // "发现音乐"页面(首页) { path: '/home', component: () => import('@/views/Home'), children: [ { path: 'discover', component: () => import('@/views/Home/Discover') }, { path: 'toplist/:id?', component: () => import('@/views/Home/TopList') }, { path: 'playlist', component: () => import('@/views/Home/PlayList') }, { path: 'djradio', component: () => import('@/views/Home/DjRadio') }, { path: 'artist', component: () => import('@/views/Home/Artist') }, { path: 'album', component: () => import('@/views/Home/Album') }, ] }, // "我的音乐"页面 { path: '/my', component: () => import('@/views/My'), redirect: '/my/playlist', children: [ { path: 'artist', component: () => import('@/views/My/Logged/Artist') }, { path: 'mv', component: () => import('@/views/My/Logged/Mv') }, { path: 'radio', component: () => import('@/views/My/Logged/DjRadio') }, { path: 'playlist/:id?', component: () => import('@/views/My/Logged/PlayList') }, ] }, // "关注"页面 { path: '/friend', component: () => import('@/views/Friend') }, // 专辑页面 { path: '/album/:id?', component: () => import('@/views/Album')}, // 歌单页面 { path: '/playlist/:id?', component: () => import('@/views/PlayList')}, // 歌手页面 { path: '/artist', component: () => import('@/views/Artist'), redirect: '/artist/song', children: [ { path: 'song', component: () => import('@/views/Artist/MainLeft/Song.vue') }, { path: 'album', component: () => import('@/views/Artist/MainLeft/Album.vue') }, { path: 'mv', component: () => import('@/views/Artist/MainLeft/Mv.vue') }, { path: 'desc', component: () => import('@/views/Artist/MainLeft/Desc.vue') }, ] }, // 歌曲页面 { path: '/song/:id?', component: () => import('@/views/Song') },]const router = new VueRouter({ routes, // 切换路由时,将滚动条复位到最顶部和最左侧 scrollBehavior(to, from, savedPosition) { // savedPosition当且仅当通过浏览器的前进/后退按钮触发时才可用 if (savedPosition) { return savedPosition } else { return { x: 0, y: 0 } } }})export default router

4 请求工具

基于axios封装请求工具,调用接口时使用。

  1. 创建一个axios实例
  2. 请求拦截器:携带时间戳,如果有cookie携带cookie
  3. 响应拦截器:剥离无效数据
  4. 导出一个函数,调用当前的axios实例发送请求,返回Promise
import axios from 'axios'const instance = axios.create({ baseURL: 'http://localhost:3000', timeout: 5000,})// 请求拦截器instance.interceptors.request.use((config) => { let cookie = localStorage.getItem('COOKIE') if (config.method.toLowerCase() === 'get') { if (!config.params) config.params = {} config.params.timerstamp = Date.parse(new Date()) if (cookie && cookie !== '' && !config.params.cookie) { config.params.cookie = cookie } } else { if (!config.data) config.data = {} config.data.timerstamp = Date.parse(new Date()) if (cookie && cookie !== '' && !config.data.cookie) { config.data.cookie = cookie } } return config;}, (error) => { return Promise.reject(error);})// 响应拦截器instance.interceptors.response.use((response) => { return response.data;}, (error) => { return Promise.reject(error);})export default (url, method, submitData) => { return instance({ url, method, [method.toLowerCase() === 'get' ? 'params' : 'data']: submitData })}

关键词:音乐,练习

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭