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 相关文章推荐
js弹窗返回值详解(window.open方式)
Jan 11 Javascript
关于jQuery判断元素是否存在的问题示例探讨
Jul 21 Javascript
web前端开发JQuery常用实例代码片段(50个)
Aug 28 Javascript
简单谈谈Javascript中类型的判断
Oct 19 Javascript
JS三级可折叠菜单实现方法
Feb 29 Javascript
14 个折磨人的 JavaScript 面试题
Aug 08 Javascript
JS实现数组去重复值的方法示例
Feb 18 Javascript
Node.js中.pfx后缀文件的处理方法
Mar 10 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
Jul 10 Javascript
快速搭建React的环境步骤详解
Nov 06 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
Nov 14 Javascript
koa2的中间件功能及应用示例
Mar 05 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防注入,表单提交值转义的实现详解
2013/06/10 PHP
解析isset与is_null的区别
2013/08/09 PHP
PHP四大安全策略
2014/03/12 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
JavaScript 创建对象
2009/07/17 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
jquery 页面滚动到底部自动加载插件集合
2014/01/31 Javascript
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
jQuery蓝色风格滑动导航栏代码分享
2015/08/19 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
JS实现探测网站链接的方法【测试可用】
2016/11/08 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
jQuery实现文字自动横移
2017/01/08 Javascript
JavaScript中transform实现数字翻页效果
2017/03/08 Javascript
AngularJS使用拦截器实现的loading功能完整实例
2017/05/17 Javascript
create-react-app构建项目慢的解决方法
2018/03/14 Javascript
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
通过源码分析Python中的切片赋值
2017/05/08 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
浅谈Python中的bs4基础
2018/10/21 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
详解Html5 监听拦截Android返回键方法
2018/04/18 HTML / CSS
马德里运动鞋商店:Nigra Mercato
2020/02/16 全球购物
煤矿班组长岗位职责
2013/12/29 职场文书
社团活动策划书范文
2014/01/09 职场文书
关于廉洁的广播稿
2014/01/30 职场文书
秋天的图画教学反思
2014/05/01 职场文书
普通党员自我剖析材料
2014/10/07 职场文书
幼儿园校园小喇叭广播稿
2014/10/17 职场文书
团干部培训班心得体会
2016/01/06 职场文书
redis requires ruby version2.2.2的解决方案
2021/07/15 Redis