Vue实现远程获取路由与页面刷新导致404错误的解决
一、背景
先简单介绍一下现在项目情况:前后端分离,后端服务是Java写的,前端是Vue+ElementUI。
最近的一个需求是:通过后端Api去获取前端路由表,原因是每个登录角色对应的前端路由表可能是不一样的(权限问题)
二、遇到的问题
因为前端Vue+ElementUI项目是单页应用——即只有一个index.html页面,如果路由从远程获取的话,每次F5或点击刷新按钮刷新页面的时候,就会找不到对应的路径而报404错误
三、解决方案
1、通过api远程获取路由,然后在前端生成对应路由
/*
将 服务器获得的[路由json字符串]转换成可访问的[前端路由组件]
@remoteRouterMap 服务器获得的[路由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默认是hash模式)
export default new Router({
mode: 'history', //后端支持可开
scrollBehavior: () => ({ y: 0 }),
routes: constantRouterMap,
linkActiveClass: 'is-active'
})
3、在nginx中设置将404错误指向index文件
location / {
try_files $uri $uri/ /index.html;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
Vue3+Vite中不支持require的方式引入本地图片的解决方案
这篇文章主要介绍了Vue3+Vite中不支持require的方式引入本地图片的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-01-01
Vue中ElementUI结合transform使用时如何修复el-select弹框定位不准确问题
这篇文章主要介绍了Vue中ElementUI结合transform使用时如何修复el-select弹框定位不准确问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧2024-01-01
vue开发chrome插件,实现获取界面数据和保存到数据库功能
这篇文章主要介绍了vue开发chrome插件,实现获取界面数据和保存到数据库功能的示例,帮助大家更好的理解和使用vue,感兴趣的朋友可以了解下2020-12-12


最新评论