浅谈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 相关文章推荐
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
Mar 06 Javascript
在次封装easyui-Dialog插件实现代码
Nov 14 Javascript
JS保留两位小数,多位小数的示例代码
Jan 07 Javascript
javascript计算用户打开网页的停留时间
Jan 09 Javascript
模拟一个类似百度google的模糊搜索下拉列表
Apr 15 Javascript
jquery用offset()方法获得元素的xy坐标
Sep 06 Javascript
动态创建按钮的JavaScript代码
Jan 29 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
Mar 21 jQuery
利用JS对iframe父子(内外)页面进行操作的方法教程
Jun 15 Javascript
详解vue前后台数据交互vue-resource文档
Jul 19 Javascript
利用JS如何计算字符串所占字节数示例代码
Sep 13 Javascript
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
Apr 09 Javascript
详解关于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
模仿OSO的论坛(二)
2006/10/09 PHP
php 智能404跳转代码,适合换域名没改变目录的网站
2010/06/04 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
完美解决Thinkphp3.2中插入相同数据的问题
2017/08/01 PHP
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
MooBox 基于Mootools的对话框插件
2012/01/20 Javascript
javascript的console.log()用法小结
2012/05/31 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
web打印小结
2017/01/11 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
2017/09/11 Javascript
js传递数组参数到后台controller的方法
2018/03/29 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
vue+eslint+vscode配置教程
2019/08/09 Javascript
用JS实现一个简单的打砖块游戏
2019/12/11 Javascript
python连接mongodb操作数据示例(mongodb数据库配置类)
2013/12/31 Python
python 3利用BeautifulSoup抓取div标签的方法示例
2017/05/28 Python
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
Python中的引用知识点总结
2019/05/20 Python
new_zeros() pytorch版本的转换方式
2020/02/18 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
德购商城:德国进口直邮商城
2017/06/13 全球购物
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
实习自我鉴定范文
2013/10/30 职场文书
商务英语本科生的自我评价分享
2013/11/15 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
收入及婚姻状况证明
2014/11/20 职场文书
2015年医德考评自我评价
2015/03/03 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
JS 基本概念详细介绍
2021/10/16 Javascript