vue模仿網(wǎng)易云音樂(lè)的單頁(yè)面應(yīng)用
說(shuō)明
一直想做一個(gè)基于VUE的項(xiàng)目,但是因?yàn)轫?xiàng)目往往要涉及到后端的知識(shí)(不會(huì)后端真的苦),所以就沒(méi)有一直真正的動(dòng)手去做一個(gè)項(xiàng)目。
直到發(fā)現(xiàn)GitHub上有網(wǎng)易云音樂(lè)的api NeteaseCloudMusicApi ,才開(kāi)始動(dòng)手去做。
僅僅完成了首頁(yè),登入,歌單,歌曲列表頁(yè)。
項(xiàng)目地址
https://github.com/qp97vi/music
項(xiàng)目成功運(yùn)行還要把后端api在本地運(yùn)行
前端技術(shù)棧
vue2+vuex+vue-router+axios+mint-ui+webpack
遇到的問(wèn)題
1.前端路由攔截
想做一個(gè)登錄攔截,驗(yàn)證沒(méi)有登錄之前,就跳轉(zhuǎn)到登錄頁(yè)面
解決方法是:通過(guò)http response 攔截器判斷token(本地的cookie)判斷
創(chuàng)建一個(gè)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信息并跳轉(zhuǎn)到登錄頁(yè)面 store.commit(types.LOGOUT) // 只有在當(dāng)前路由不是登錄頁(yè)面才跳轉(zhuǎn) 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() }) } },
總結(jié)
以上所述是小編給大家介紹的vue模仿網(wǎng)易云音樂(lè)的單頁(yè)面應(yīng)用,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
- 詳解處理Vue單頁(yè)面應(yīng)用SEO的另一種思路
- 解決vue-cli單頁(yè)面手機(jī)應(yīng)用input點(diǎn)擊手機(jī)端虛擬鍵盤(pán)彈出蓋住input問(wèn)題
- Vue單頁(yè)面應(yīng)用保證F5強(qiáng)刷不清空數(shù)據(jù)的解決方案
- vue中SPA單頁(yè)面應(yīng)用程序詳解
- vue構(gòu)建單頁(yè)面應(yīng)用實(shí)戰(zhàn)
- vue.js單頁(yè)面應(yīng)用實(shí)例的簡(jiǎn)單實(shí)現(xiàn)
- 基于Vue2實(shí)現(xiàn)的仿手機(jī)QQ單頁(yè)面應(yīng)用功能(接入聊天機(jī)器人 )
相關(guān)文章
利用Vue.js實(shí)現(xiàn)求職在線(xiàn)之職位查詢(xún)功能
Vue.js是當(dāng)下很火的一個(gè)JavaScript MVVM庫(kù),它是以數(shù)據(jù)驅(qū)動(dòng)和組件化的思想構(gòu)建的。下面這篇文章主要給大家介紹了關(guān)于利用Vue.js實(shí)現(xiàn)求職在線(xiàn)之職位查詢(xún)功能的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-07-07在vue中created、mounted等方法使用小結(jié)
這篇文章主要介紹了在vue中created、mounted等方法使用小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07vue 實(shí)現(xiàn)input表單元素的disabled示例
今天小編就為大家分享一篇vue 實(shí)現(xiàn)input表單元素的disabled示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10使用VueCli3+TypeScript+Vuex一步步構(gòu)建todoList的方法
這篇文章主要介紹了使用VueCli3+TypeScript+Vuex一步步構(gòu)建todoList的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07在vue使用clipboard.js進(jìn)行一鍵復(fù)制文本的實(shí)現(xiàn)示例
這篇文章主要介紹了在vue使用clipboard.js進(jìn)行一鍵復(fù)制文本的實(shí)現(xiàn)示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01詳解vue-cli本地環(huán)境API代理設(shè)置和解決跨域
這篇文章主要介紹了詳解vue-cli本地環(huán)境API代理設(shè)置和解決跨域,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09windows下vue-cli及webpack搭建安裝環(huán)境
這篇文章主要介紹了windows下vue-cli及webpack搭建安裝環(huán)境,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-04-04vue移動(dòng)端實(shí)現(xiàn)手指滑動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了vue移動(dòng)端實(shí)現(xiàn)手指滑動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06