vue模仿网易云音乐的单页面应用


Posted in Javascript onApril 24, 2019

说明

一直想做一个基于VUE的项目,但是因为项目往往要涉及到后端的知识(不会后端真的苦),所以就没有一直真正的动手去做一个项目。

直到发现GitHub上有网易云音乐的api NeteaseCloudMusicApi ,才开始动手去做。

仅仅完成了首页,登入,歌单,歌曲列表页。

项目地址

https://github.com/qp97vi/music

项目成功运行还要把后端api在本地运行

前端技术栈

vue2+vuex+vue-router+axios+mint-ui+webpack

遇到的问题

1.前端路由拦截

想做一个登录拦截,验证没有登录之前,就跳转到登录页面

解决方法是:通过http response 拦截器判断token(本地的cookie)判断

创建一个http.js

import axios from 'axios'
import store from './store/store'
import * as types from './store/types'
import router from './router/index'

// axios 配置
axios.defaults.timeout = 5000
axios.defaults.baseURL = 'https://api.github.com'

// http request 拦截器
axios.interceptors.request.use(
 config => {
  if (store.state.xsrfCookieName) {
   config.headers.Authorization = `xsrfCookieName ${store.state.xsrfCookieName}`
  }
  return config
 },
 err => {
  return Promise.reject(err)
 },
)

// http response 拦截器
axios.interceptors.response.use(
 response => {
  return response
 },
 error => {
  if (error.response) {
   switch (error.response.status) {
    case 401:
     // 401 清除token信息并跳转到登录页面
     store.commit(types.LOGOUT)
     
     // 只有在当前路由不是登录页面才跳转
     router.currentRoute.path !== 'login' &&
      router.replace({
       path: 'login',
       query: { redirect: router.currentRoute.path },
      })
   }
  }
  // console.log(JSON.stringify(error));//console : Error: Request failed with status code 402
  return Promise.reject(error.response.data)
 },
)

export default axios

2.路由懒加载

{
   path:'/my',
   name:'my',
    meta:{
    requireAuth:true,
   },
   component:resolve=>{
    Indicator.open('加载中...');
    require.ensure(['@/views/my'], () => {
     resolve(require('@/views/my'))
     Indicator.close()
    })
   }
  },

总结

以上所述是小编给大家介绍的vue模仿网易云音乐的单页面应用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
JScript内置对象Array中元素的删除方法
Mar 08 Javascript
msn上的tab功能Firefox对childNodes处理的一个BUG
Jan 21 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
Dec 19 Javascript
JavaScript获取表单内所有元素值的方法
Apr 02 Javascript
jqTransform美化表单
Oct 10 Javascript
Javascript技术栈中的四种依赖注入详解
Feb 23 Javascript
微信支付 JS API支付接口详解
Jul 11 Javascript
使用BootStrap实现悬浮窗口的效果
Dec 13 Javascript
prototype与__proto__区别详细介绍
Jan 09 Javascript
Vue数据驱动模拟实现3
Jan 11 Javascript
vue如何引入sass全局变量
Jun 28 Javascript
vue中 v-for循环的用法详解
Feb 19 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
Apr 24 #Javascript
详解关于webpack多入口热加载很慢的原因
Apr 24 #Javascript
微信小程序实现的一键连接wifi功能示例
Apr 24 #Javascript
vue router 通过路由来实现切换头部标题功能
Apr 24 #Javascript
js实现全选反选不选功能代码详解
Apr 24 #Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
Apr 24 #Javascript
Vue源码解析之数据响应系统的使用
Apr 24 #Javascript
You might like
php中3种方法删除字符串中间的空格
2014/03/10 PHP
php操作csv文件代码实例汇总
2014/09/22 PHP
PHP多线程之内部多线程实例分析
2015/03/09 PHP
PHP中的事务使用实例
2015/05/26 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
2018/08/21 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
解析js原生方法创建表格效率测试
2013/07/08 Javascript
JS根据生日算年龄的方法
2015/05/05 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
原生JS实现图片轮播与淡入效果的简单实例
2016/08/21 Javascript
微信小程序 LOL 英雄介绍开发实例
2016/09/30 Javascript
Angular2搜索和重置按钮过场动画
2017/05/24 Javascript
BootStrap中的Fontawesome 图标
2017/05/25 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
Node.js静态服务器的实现方法
2018/02/28 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
2020/09/29 Javascript
基于Python实现的扫雷游戏实例代码
2014/08/01 Python
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
python实现猜数字游戏
2020/03/25 Python
Python BeautifulReport可视化报告代码实例
2020/04/13 Python
CSS3关于z-index不生效问题的解决
2020/02/19 HTML / CSS
贝玲妃美国官方网站:Benefit美国
2016/08/28 全球购物
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
实习老师个人总结的自我评价
2013/09/28 职场文书
迎元旦广播稿
2014/02/22 职场文书
奠基仪式主持词
2014/03/20 职场文书
教师竞聘演讲稿
2014/05/16 职场文书
体育节口号
2014/06/19 职场文书
2014年派出所工作总结
2014/11/21 职场文书
遗嘱格式范本
2015/08/07 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
何时使用Map来代替普通的JS对象
2021/04/29 Javascript