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


Posted in Javascript onJanuary 25, 2018

解决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}
   ]
  }
   ……
 ]
})

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

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

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

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

二. 异常解析

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

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

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

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

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

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

三. 解决问题

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

修改前:

<script src="./static/js/stomp.js"></script>

修改后

<script src="/static/js/stomp.js"></script>

四. 原理

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

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

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

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

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

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

Javascript 相关文章推荐
JQuery UI DatePicker中z-index默认为1的解决办法
Sep 28 Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
Oct 23 Javascript
原生javascript实现图片按钮切换
Jan 12 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
Mar 18 Javascript
jQuery实现给页面换肤的方法
May 30 Javascript
Backbone.js的Hello World程序实例
Jun 19 Javascript
JavaScript在网页中画圆的函数arc使用方法
Nov 13 Javascript
JS判断iframe是否加载完成的方法
Aug 03 Javascript
js实现的光标位置工具函数示例
Oct 03 Javascript
jQuery中的100个技巧汇总
Dec 15 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
Oct 06 Javascript
Vue如何循环提取对象数组中的值
Nov 18 Vue.js
vue通过路由实现页面刷新的方法
Jan 25 #Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
Jan 25 #jQuery
JavaScript实现职责链模式概述
Jan 25 #Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
Jan 25 #jQuery
解决Jquery下拉框数据动态获取的问题
Jan 25 #jQuery
vue引入新版 vue-awesome-swiper插件填坑问题
Jan 25 #Javascript
vue better-scroll插件使用详解
Jan 25 #Javascript
You might like
关于在php.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
php执行sql语句的写法
2009/03/10 PHP
一个很不错的PHP翻页类
2009/06/01 PHP
php中global和$GLOBALS[]的分析之一
2012/02/02 PHP
解析php入库和出库
2013/06/25 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
教你在PHPStorm中配置Xdebug
2015/07/27 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
2016/06/21 PHP
详解PHP处理密码的几种方式
2016/11/30 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
php把字符串指定字符分割成数组的方法
2018/03/12 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
javascript中callee与caller的用法和应用场景
2010/12/08 Javascript
有关于JS构造函数的重载和工厂方法
2013/04/07 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
node.js中的path.sep方法使用说明
2014/12/08 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
2017/09/14 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
express启用https使用小记
2019/05/21 Javascript
[08:04]TI4西雅图DOTA2前线报道 海涛探访各路人马
2014/07/09 DOTA
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
2019/06/24 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
2020/03/30 Python
python计算auc的方法
2020/09/09 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
大学毕业生最详细的自我评价分享
2013/11/18 职场文书
高级编程求职信模板
2014/02/16 职场文书
博士生专家推荐信
2015/03/25 职场文书
2015年个人工作总结报告
2015/04/25 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书