Vue下路由History模式打包后页面空白的解决方法


Posted in Javascript onJune 29, 2018

vue的路由在默认的hash模式下,默认打包一般不会有什么问题,不过hash模式由于url会带有一个#,不美观,而且在微信分享,授权登录等都会有一些坑.所以history模式也会有一些应用场景.新手往往会碰到history模式打包后页面一片空白的情况,而且没有资源加载错误的报错信息.

这个其实仔细研究下会发现,如果项目直接放的跟目录, 那么是没有问题的,如果是子目录,那么就会一片空白了.这个vue官方有解释,需要加一个base

// base: '/history',
// mode: 'history',

这个base即为项目路径.

以上两个都解决了,还是会发现,此时只有首页能访问,通过首页点进去其他路由也是可以的,但是如果在其他路由刷新就有错误了,这个懂history模式的也应该知道,history模式是h5 api的 history.pushState,相对于是浏览器模拟了一条历史,而真正服务器上没有这个路径资源,为什么hash模式不存在这个问题呢?hash模式是带#,这个服务器不会解析,相对于还是返回html而已,index.html会根据vue路由去解析,而history模式则会请求服务器上的此地址,服务器上没有相关路径就会报错了,vue-router的官方文档有介绍各种配置,比如ngnix的配置

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

上面这个对于直接项目的根目录是可以的,但是如果项目不是根目录还是会有问题,

location /history {
   root C:/web/static;
 index index.html index.htm;
 #error_page 404 /history/index.html;
 if (!-e $request_filename) {
  rewrite ^/(.*) /history/index.html last;
  break;
 }
}

上面这个是项目路径名为history,这样配置后就不会有vue打包后页面空白问题了,history路由也可以自由访问了,不过要记得上面说的,非根目录的项目需要加上base 的路径

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

Javascript 相关文章推荐
如何用javascript判断录入的日期是否合法
Jan 08 Javascript
javascript 事件绑定问题
Jan 01 Javascript
javaScript同意等待代码实现心得
Jan 01 Javascript
判断一个对象是否为jquery对象的方法
Mar 12 Javascript
jQuery中选择器小问题(新人难免遇到)
Mar 31 Javascript
JS运动框架之分享侧边栏动画实例
Mar 03 Javascript
浅析jquery数组删除指定元素的方法:grep()
May 19 Javascript
浅谈js里面的InttoStr和StrtoInt
Jun 14 Javascript
浅谈jQuery before和insertBefore的区别
Dec 04 Javascript
JavaScript动态加载重复绑定问题
Apr 01 Javascript
详解处理bootstrap4不支持远程静态框问题
Jul 20 Javascript
Vue如何获取数据列表展示
Dec 11 Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
Jun 29 #Javascript
JavaScript实现仿Clock ISO时钟
Jun 29 #Javascript
vue ssr 指南详读
Jun 29 #Javascript
jQuery实现获取动态添加的标签对象示例
Jun 28 #jQuery
Vue实现textarea固定输入行数与添加下划线样式的思路详解
Jun 28 #Javascript
详解swipe使用及竖屏页面滚动方法
Jun 28 #Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
Jun 28 #Javascript
You might like
PHP简单日历实现方法
2016/07/20 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
php 生成加密公钥加密私钥实例详解
2017/06/16 PHP
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
Angularjs的键盘事件的绑定
2017/07/27 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
vue 挂载路由到头部导航的方法
2017/11/13 Javascript
layui的表单提交以及验证和修改弹框的实例
2019/09/09 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
layui实现数据表格自定义数据项
2019/10/26 Javascript
vue实现图片上传功能
2020/05/28 Javascript
Vue切换Tab动态渲染组件的操作
2020/09/21 Javascript
[01:35:53]完美世界DOTA2联赛PWL S3 Magma vs GXR 第二场 12.13
2020/12/17 DOTA
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
浅析Python中的join()方法的使用
2015/05/19 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
python+opencv实现的简单人脸识别代码示例
2017/11/14 Python
Python编程pygal绘图实例之XY线
2017/12/09 Python
python MySQLdb使用教程详解
2018/03/20 Python
20行python代码的入门级小游戏的详解
2019/05/05 Python
python中Pexpect的工作流程实例讲解
2021/03/02 Python
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
巴西独家产品和现场演示购物网站:Shoptime
2019/07/11 全球购物
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
后勤部长岗位职责
2013/12/14 职场文书
初中教师个人总结
2015/02/10 职场文书