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 相关文章推荐
Mozilla中显示textarea中选择的文字
Sep 07 Javascript
浅析js中取绝对值的2种方法
Jul 09 Javascript
iframe父页面获取子页面参数的方法
Feb 21 Javascript
Node.js和PHP根据ip获取地理位置的方法
Mar 14 Javascript
标题过长使用javascript按字节截取字符串
Apr 24 Javascript
JS模拟简易滚动条效果代码(附demo源码)
Apr 05 Javascript
JavaScript 栈的详解及实例代码
Jan 22 Javascript
基于React实现表单数据的添加和删除详解
Mar 14 Javascript
在vue-cli中组件通信的方法
Dec 16 Javascript
对类Vue的MVVM前端库的实现代码
Sep 07 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
Dec 05 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
Sep 24 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 HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
解析coreseek for sphinx的使用
2013/06/21 PHP
php上传文件中文文件名乱码的解决方法
2013/11/01 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
IE图片缓存document.execCommand("BackgroundImageCache",false,true)
2011/03/01 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
Javascript学习笔记之数组的构造函数
2014/11/23 Javascript
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
利用express启动一个server服务的方法
2017/09/17 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
对angularJs中controller控制器scope父子集作用域的实例讲解
2018/10/08 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
2019/07/29 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
使用js和canvas实现时钟效果
2020/09/08 Javascript
Python Sleep休眠函数使用简单实例
2015/02/02 Python
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
Python的时间模块datetime详解
2017/04/17 Python
Python for循环与range函数的使用详解
2019/03/23 Python
python+flask编写一个简单的登录接口
2020/11/13 Python
python实现经典排序算法的示例代码
2021/02/07 Python
可自定义箭头样式的CSS3气泡提示框
2016/03/16 HTML / CSS
canvas版人体时钟的实现示例
2021/01/29 HTML / CSS
世界上最大的糖果店:Dylan’s Candy Bar
2017/11/07 全球购物
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
工程监理应届生求职信
2013/11/09 职场文书
分厂厂长岗位职责
2013/12/29 职场文书
国贸专业个人求职信范文
2014/01/08 职场文书
中秋手机店促销方案
2014/06/16 职场文书
个人作风建设剖析材料
2014/10/11 职场文书
经典祝酒词大全
2015/08/12 职场文书
正确的理解和使用Django信号(Signals)
2021/04/14 Python
CSS基础详解
2021/10/16 HTML / CSS