浅谈vue项目4rs vue-router上线后history模式遇到的坑


Posted in Javascript onSeptember 27, 2018

此次项目开发完后准备打包,因为hash模式的路径带#看着实在是有点丑,所以采用history模式。因为本次项目属于以前网站重构,但是seo问题,所以需要以前的一些地址路径写,所以vue-router的路径全部重改了。打包后查了网上一大堆,都说要把config里的index.js 里的build里的

assetsPublicPath: '/'改成‘./',打包上线发现在hash模式下是没问题的,

但一旦改成history模式,有些动态js文件的路径都是错的。无奈之下死马当活马医,把‘./'改回了‘/'在history模式

下再次打包上线,发现点击跳转页面都是正常的,有些小激动。但是history模式的通病就是不能刷新,

因为原来跳转时其实不是通过请求服务器的,而是通过js操作history的API改变地址完成的。

当你刷新了之后浏览器就耿直的去请求服务器了,然而服务器没有这个路由,于是就404了。

解决方法1:可以做个代理,让所有访问服务器的地址都返回同一个入口文件。(推荐使用)

解决方法2:采用静态文件的形式让每个目录都存在就不会报错了

我们服务器是采用nginx,我不会,没弄,就自己用了nodejs和express搭建了个简单服务器,并采用了官方推荐的中间件

connect-history-api-fallback

使用方法:

在服务器app.js文件里引入

var history = require('connect-history-api-fallback');
然后在app绑定路由之前绑定中间件,
app.use(history({ 
rewrites: [ 
{ from: /^\/wap\/.*$/, to: '/index.html' }//这个是正确方式 
]}));

我一开始

app.use(history({
rewrites: [
{ from: /^\/wap\/.*$/, to: '/' }
]
}));

这样的,发现刷新是正常的,但是路径后面总是多了个"/",看着很是奇怪,就试着改成当前下的html文件,发现真的可以。从此大功告成。

以上这篇浅谈vue项目4rs vue-router上线后history模式遇到的坑就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript图像处理思路及实现代码
Dec 25 Javascript
Javascript小技巧之生成html元素
May 15 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
Apr 15 Javascript
javascript实现数组中的内容随机输出
Aug 11 Javascript
jQuery实现拼图小游戏(实例讲解)
Jul 24 jQuery
Vue的Class与Style绑定的方法
Sep 01 Javascript
JS实现简单的浮动碰撞效果示例
Dec 28 Javascript
详解微信小程序缓存--缓存时效性
May 02 Javascript
jQuery操作cookie的示例代码
Jun 05 jQuery
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
Dec 29 Javascript
JavaScript实现下拉列表
Jan 20 Javascript
vue实现轮播图帧率播放
Jan 26 Vue.js
详解关于vue2.0工程发布上线操作步骤
Sep 27 #Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
Sep 27 #Javascript
Vue中的v-for指令不起效果的解决方法
Sep 27 #Javascript
在vue中使用v-bind:class的选项卡方法
Sep 27 #Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
Sep 27 #Javascript
详解如何在vue项目中使用lodop打印插件
Sep 27 #Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
Sep 27 #Javascript
You might like
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
屏蔽PHP默认设置中的Notice警告的方法
2016/05/20 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
2016/12/02 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
javascript调试说明
2010/06/07 Javascript
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
jQuery操作CheckBox的方法介绍(选中,取消,取值)
2014/02/04 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
EasyUI创建人员树的实例代码
2017/09/15 Javascript
jQuery代码优化方法总结
2018/01/29 jQuery
js的各种数据类型判断的介绍
2019/01/19 Javascript
Python中的exec、eval使用实例
2014/09/23 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
Python实现获取前100组勾股数的方法示例
2018/05/04 Python
使用Python更换外网IP的方法
2018/07/09 Python
浅谈python中拼接路径os.path.join斜杠的问题
2018/10/23 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
对Python 多线程统计所有csv文件的行数方法详解
2019/02/12 Python
python实现输入任意一个大写字母生成金字塔的示例
2019/10/27 Python
python 多线程爬取壁纸网站的示例
2021/02/20 Python
Skyscanner加拿大:全球旅行搜索平台
2018/11/19 全球购物
新学期红领巾广播稿
2014/01/14 职场文书
秘书英文求职信
2014/04/16 职场文书
弄虚作假心得体会
2014/09/10 职场文书
材料员岗位职责
2015/02/10 职场文书
2015年度校学生会工作总结报告
2015/05/23 职场文书
暂住证明怎么写
2015/06/19 职场文书
Python获取百度热搜的完整代码
2021/04/07 Python
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
2021/06/21 Java/Android
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android