解决vue-router嵌套路由(子路由)在history模式下刷新无法渲染页面的问题,具体内容如下

一. 异常描述

本来使用的是vue-router的hash模式,但是hash模式下url需要带“#”符号,不仅看起来不舒服,而且有些场景下是会破坏路由中的"#"(微信分享页面就会把"#"后边的内容处理掉),所以就需要使用history模式,然后就让后端改下nginx配置:

location / { try_files $uri $uri/ /index.html; }

vue-router使用history模式+使用嵌套路由:

const router = new Router({

mode: 'history',

routes: [

{

path: '/',

component: mall,

name: 'mall'

},

……

//我的银行卡

{

path: '/myCard',

meta: { requireAuth: true },

component: myCard,

name: 'myCard',

children:[

{ path:'', component: card},

{ path:'add', component: add}

]

}

……

]

})

访问路由和嵌套路由页面,显示正常,但是刷新页面的时候,嵌套路由页面就出异常了:

页面样式全乱了,看下页面请求加载的静态文件,所有静态文件都是404;

二. 异常解析

1. 看下官方文档对嵌套路由的说明:

2. 再看之前的异常页面,看来我们的父路由成了根目录了看下文件路径了:

3. 看下我们引入这些异常文件,是在index.html文件中直接引用的,也就是在根路径下引入的。之前的hash模式下,根路径是不会变的,所以我们在index.html文件中直接引入这些静态文件,是可行的,但是使用history模式后,根路径就不固定了。那么这种引入方式就不可行了,所以才造成了上边出现的页面无法渲染的问题:

三. 解决问题

这里有点尴尬,先考虑的主Vue中以Import的方式引入静态样式文件,的确可行,但是最后发现,直接修改index.html文件中的静态文件引入路径就OK了:

修改前:

修改后

四. 原理

./ 是指用户所在的当前目录(相对路径);

/ 是指根目录(绝对路径,项目根目录),也就是项目根目录;

对于hash模式,根路径是固定的,就是项目的根目录,但是history模式下,以/开头的嵌套路径会被当作根路径,所以使用“./”引入文件,就会找不到文件了,因为文件本身就是在项目根目录下的,并不在嵌套路径这个目录下。

总结,无论hash模式还是history模式,可以直接使用“/”从项目根目录引入静态文件。

PS:之前一段时间就遇到过这个问题,百度了好久,发现很少有人问这个问题,有一个也没人回答。也问了好些前端大神,还是没能解决这个问题。也许是平时写惯了“./” 和“../”这些开头的路径了吧,并没有注意到静态文件引入方式的问题,折腾了好些方法,最后很尴尬的发现,其实问题很简单,只是对框架的底层了解不透彻罢了!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法

本文地址: http://www.cppcns.com/ruanjian/java/218643.html

vue 刷新嵌套路由_vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法...相关推荐

  1. h5 uniapp history模式下刷新页面404

    h5 uniapp history模式下刷新页面404 问题:uniapp 的history 把#去掉了,但是当刷新页面的时候出现404 解决方案 需要服务端支持 如果 URL 匹配不到任何静态资源, ...

  2. uniapp打包H5下history模式下刷新页面丢失处理

    解决方案:https://www.cnblogs.com/zyfenblog/p/13865523.html

  3. 解决Vue history模式下使用嵌套路由打包部署后刷新页面为空白页

    解决Vue history模式下使用嵌套路由打包部署后刷新页面为空白页 前言 问题分析 问题解决 结语 前言 众所周知,Vue路由有两种模式,默认hash模式,这种模式下url上会带"#&q ...

  4. nginx导致vue设置history模式下的请求丢失参数

    nginx导致vue设置history模式下的请求丢失参数 问题描述: 当访问下面的路径时参数会丢失: http://ip/vuecay/path1/path2?name=cay 演示效果: 可以看到 ...

  5. vue 打包路由报错_Vue下路由History模式打包后页面空白的解决方法

    vue的路由在默认的hash模式下,默认打包一般不会有什么问题,不过hash模式由于url会带有一个#,不美观,而且在微信分享,授权登录等都会有一些坑.所以history模式也会有一些应用场景.新手往 ...

  6. 处理基于nginx上线项目后,history模式下出现的刷新后路由丢失问题

    history模式的项目在上线后可能会出现刷新后页面404的问题 该问题可以对nginx做一些配置解决 我们在nginx文件夹下的conf文件夹中可以找到nginx.conf文件,在该文件下找到loc ...

  7. vue项目全局配置微信分享_Vue项目history模式下微信分享总结-个人文章-SegmentFault思否...

    每回遇到微信分享都是一个坑,目前的商城项目使用vue开发,采用history的路由模式,配置微信分享又遇到了很多问题,最后终于解决了,现将解决的过程分享一下. 原文https://justyeh.to ...

  8. list vue 删除后页面渲染_Vue项目中v-for数组删除第n项元素产生渲染错误问题及解决方法...

    项目背景 最近使用Vue(版本2.9)开发一个项目时,要生成表单列表,所以使用了v-for来做循环,循环里的元素(item)是一个子组件.同时每个元素都有删除按钮,点击后删除当前元素. 初始代码如下: ...

  9. vue检测是不是360浏览器兼容模式_Vue项目 IE/360浏览器兼容模式下打开空白的问题...

    记一次bug解决 bug发现 项目不复杂,就是一个基于vue-cli3搭建的pc端项目 在开发进入后半段的时候发现在360浏览器兼容模式先显示空白而且没有报错,此类问题之前我写react在低版本的qq ...

最新文章

  1. C++实现十大排序算法(冒泡,选择,插入,归并,快速,堆,希尔,桶,计数,基数)排序算法时间复杂度、空间复杂度、稳定性比较(面试经验总结)
  2. 科普丨莫拉维克悖论(人工智能中最重要的发现之一)
  3. 包继承Maven的超级POM
  4. python set 排序_python set 排序_如何在Python中使用sorted()和sort()
  5. linux-mint 安装 python 包 Gevent
  6. TensorFlow 笔记3--模型的保存与恢复
  7. CentOS7 安装 Mysql 服务
  8. 华为交换机配置时区_把华为交换机设置成时钟源服务器(NTP)
  9. Windows下的hiberfil.sys文件及其作用
  10. 古诗文网站的网络爬虫编写方式,通过网络爬虫抓去内容
  11. Mac软件打开时闪退怎么办?苹果电脑软件崩溃解决办法
  12. 计算机应用能力考试ppt,全国专业技术人员计算机应用能力考试 PPT 2003 题库版...
  13. 如何立即尝试macOS High Sierra Beta
  14. 台式电脑主机与屏幕的连接线
  15. 游戏开发论坛_国内游戏开发站点与论坛
  16. “世界杰出女科学家成就奖”组委会宣布2021年度五位获奖者
  17. 关于R语言显示“Warning message: In normalizePath(path.expand(path), winslash, mustWork) : path[1]=”问题的解决办法
  18. infocom 2020 整理
  19. 动态规划-leetcode#10-最长回文
  20. SpringBoot+Vue+POI实现Excel的导入与导出

热门文章

  1. 嘿,老李,又在写BUG呢?
  2. 大厂不一定要进,算法必须要学!精选算法文章89篇
  3. 运行 Java、Python、Go 等 25 种代码后,发现性能最强的竟然是它!
  4. 百度推出开发者搜索 Beta;雷军手机使用时长曝光;苹果败诉,电脑上可以模拟 iOS 系统 | 极客头条...
  5. 龙飞船再次发射成功!马斯克无缘现场,因疑似感染新冠……
  6. 苹果 Mac 电脑将采用自研芯片、App Store 上线“小程序”,WWDC20 为开发者带来了什么 ?
  7. Wi-Fi 6这么“6” 原来靠的是这些黑科技!
  8. 用大白话彻底搞懂 HBase RowKey 详细设计!
  9. 港科大郑光廷院士问诊未来,揭露 AI 最新应用与实践
  10. 《原力计划【第二季】》第1周周榜揭晓!!!