Vue實(shí)現(xiàn)遠(yuǎn)程獲取路由與頁面刷新導(dǎo)致404錯(cuò)誤的解決
一、背景
先簡(jiǎn)單介紹一下現(xiàn)在項(xiàng)目情況:前后端分離,后端服務(wù)是Java寫的,前端是Vue+ElementUI。
最近的一個(gè)需求是:通過后端Api去獲取前端路由表,原因是每個(gè)登錄角色對(duì)應(yīng)的前端路由表可能是不一樣的(權(quán)限問題)
二、遇到的問題
因?yàn)榍岸薞ue+ElementUI項(xiàng)目是單頁應(yīng)用——即只有一個(gè)index.html頁面,如果路由從遠(yuǎn)程獲取的話,每次F5或點(diǎn)擊刷新按鈕刷新頁面的時(shí)候,就會(huì)找不到對(duì)應(yīng)的路徑而報(bào)404錯(cuò)誤
三、解決方案
1、通過api遠(yuǎn)程獲取路由,然后在前端生成對(duì)應(yīng)路由
/* 將 服務(wù)器獲得的[路由json字符串]轉(zhuǎn)換成可訪問的[前端路由組件] @remoteRouterMap 服務(wù)器獲得的[路由json字符串] */ function transformJsonToRouter(remoteRouterMap) { const accessedRouters = remoteRouterMap.filter(route => { if (!route.component) { route.component = Layout }else { route.component = route.component.replace("@/views/","") route.component = _import(route.component) } if (route.children && route.children.length) { route.children = transformJsonToRouter(route.children) } return true }) return accessedRouters }
2、將路由模式改成history模式(vue默認(rèn)是hash模式)
export default new Router({ mode: 'history', //后端支持可開 scrollBehavior: () => ({ y: 0 }), routes: constantRouterMap, linkActiveClass: 'is-active' })
3、在nginx中設(shè)置將404錯(cuò)誤指向index文件
location / { try_files $uri $uri/ /index.html; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Vue腳手架學(xué)習(xí)之項(xiàng)目創(chuàng)建方式
這篇文章主要給大家介紹了關(guān)于Vue腳手架學(xué)習(xí)之項(xiàng)目創(chuàng)建方式的相關(guān)資料,文中通過介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03Vue過渡效果之CSS過渡詳解(結(jié)合transition,animation,animate.css)
Vue 在插入、更新或者移除 DOM 時(shí),提供多種不同方式的應(yīng)用過渡效果。本文將從CSS過渡transition、CSS動(dòng)畫animation及配合使用第三方CSS動(dòng)畫庫(如animate.css)這三方面來詳細(xì)介紹Vue過渡效果之CSS過渡2020-02-02Vue關(guān)于數(shù)據(jù)綁定出錯(cuò)解決辦法
這篇文章主要介紹了Vue關(guān)于數(shù)據(jù)綁定出錯(cuò)解決辦法的相關(guān)資料,需要的朋友可以參考下2017-05-05使用Vue實(shí)現(xiàn)點(diǎn)擊按鈕小球加入購物車動(dòng)畫
這篇文章主要為大家詳細(xì)介紹了如何使用Vue實(shí)現(xiàn)點(diǎn)擊按鈕小球加入購物車動(dòng)畫,文中的示例代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03詳解使用vue腳手架工具搭建vue-webpack項(xiàng)目
本篇文章主要介紹了詳解使用vue腳手架工具搭建vue-webpack項(xiàng)目,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-05-05vue+elementUI(el-upload)圖片壓縮,默認(rèn)同比例壓縮操作
這篇文章主要介紹了vue+elementUI(el-upload)圖片壓縮,默認(rèn)同比例壓縮操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08Vue2.0父組件與子組件之間的事件發(fā)射與接收實(shí)例代碼
這篇文章主要介紹了Vue2.0父組件與子組件之間的事件發(fā)射與接收實(shí)例代碼,需要的朋友可以參考下2017-09-09Vue3 Pinia獲取全局狀態(tài)變量的實(shí)現(xiàn)方式
這篇文章主要介紹了Vue3 Pinia獲取全局狀態(tài)變量的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05