浅谈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 相关文章推荐
Hutia 的 JS 代码集
Oct 24 Javascript
基于jquery的页面划词搜索JS
Sep 14 Javascript
IE、FF浏览器下修改标签透明度
Jan 28 Javascript
js判断浏览器是否支持html5
Aug 17 Javascript
javascript实现简单的页面右下角提示信息框
Jul 31 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
May 28 Javascript
jQuery实现对象转为url参数的方法
Jan 11 Javascript
干货!教大家如何选择Vue和React
Mar 13 Javascript
微信小程序methods中定义的方法互相调用的实例代码
Aug 07 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
Nov 30 Javascript
微信小程序API—获取定位的详解
Apr 30 Javascript
JavaScript Html实现移动端红包雨功能页面
Jan 10 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
ThinkPHP中的系统常量和预定义常量集合
2014/07/01 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
Yii框架日志操作图文与实例详解
2019/09/09 PHP
Laravel实现批量更新多条数据
2020/04/06 PHP
PHP7新特性
2021/03/09 PHP
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
Jquery弹出窗口插件 LeanModal的使用方法
2012/03/10 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
2016/06/07 Javascript
jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法
2016/07/27 Javascript
JavaScript实现复制文章自动添加版权
2016/08/02 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
关于jQuery里prev()的简单操作代码
2017/10/27 jQuery
原生js封装添加class,删除class的实例
2017/11/06 Javascript
Chart.js 轻量级HTML5图表绘制工具库(知识整理)
2018/05/22 Javascript
JS深入学习之数组对象排序操作示例
2020/05/01 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
2020/08/03 Javascript
[02:48]DOTA2英雄基础教程 暗夜魔王
2013/12/12 DOTA
利用python获得时间的实例说明
2013/03/25 Python
python基于mysql实现的简单队列以及跨进程锁实例详解
2014/07/07 Python
python监控键盘输入实例代码
2018/02/09 Python
Python Pandas找到缺失值的位置方法
2018/04/12 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
Python numpy线性代数用法实例解析
2019/11/15 Python
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
PHP如何对用户密码进行加密
2014/07/31 面试题
幼儿园园长自我鉴定
2013/10/22 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
被委托人身份证明
2015/08/07 职场文书