vue-router的HTML5 History 模式设置

前端之家收集整理的这篇文章主要介绍了vue-router的HTML5 History 模式设置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

VUE是当下最火爆的前端框架之一,vue-router是vue项目中几乎都会用到的组件,然而体验一时爽,其实坑不少。本篇经验将详细介绍vue-router的两种mode效果和开发测试环境下的问题,并给出解决方案。

vue-router的HTML5 History 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面

当你使用 history 模式时,URL 就像正常的 url,例如 http://yoursite.com/user/id, 就是长这样的!

不过这种模式要玩好,还需要后台配置支持。因为我们的应用是个单页客户端应用,如果后台没有正确的配置,当用户在浏览器直接访问 http://oursite.com/user/id 就会返回 404,这就尴尬了。

所以,你要在服务端增加一个覆盖所有情况的候选资源:如果 URL 匹配不到任何静态资源,则应该返回同一个 index.html 页面,这个页面就是你 app 依赖的页面

目前后端服务器有Apache、Nginx、原生 Node.js、基于 Node.js 的 Express、Internet Information Services (IIS)、Caddy、Firebase 主机等。

先给一个官方标准版配置的传送门,请戳这里→ https://router.vuejs.org/zh/guide/essentials/history-mode.html

既然是官方给出的配置,那肯定就会说的很官方咯~

按照官方给出的示例,将道理是成功的,但是官方给出的只局限于这个项目在服务器的根目录下! 如果你的项目没有放在根目录下,那么就是这么的不讲道理。

下面是在实际开发中碰到的问题。

我们的后端服务器是Nginx,所以按照官方的给出的配置,找到Nginx.conf,照抄代码修改完后重启服务器,讲道理是成功的。

#这里没有采用官方给出处理<a href="https://www.jb51.cc/tag/404cuowu/" target="_blank" class="keywords">404错误</a><a href="https://www.jb51.cc/tag/yemian/" target="_blank" class="keywords">页面</a>的方案 #方案一(把所有没有后缀名的请求如果<a href="https://www.jb51.cc/tag/404/" target="_blank" class="keywords">404</a>都<a href="https://www.jb51.cc/tag/tiaozhuan/" target="_blank" class="keywords">跳转</a>到index.html,我们没有采用) #error_page <a href="https://www.jb51.cc/tag/404/" target="_blank" class="keywords">404</a> /test/index.html; #方案二(<a href="https://www.jb51.cc/tag/404/" target="_blank" class="keywords">404</a>的方式,不是特别完美。会有浏览器留下<a href="https://www.jb51.cc/tag/404/" target="_blank" class="keywords">404</a>的状态(容易被第三方劫持),以下方式可以避免被第三方劫持!) if (!-e $request_filename) { rewrite ^/(.*) /test/index.html last; break; }

}
}

但是,事实就是这么的不讲道理,我们并没有成功!这就令人很是郁闷了,心中一万只神兽羊驼,奔腾而过~ 为什么没有成功呢,都是按部就班做的呀,完全不讲道理!

而真相只有一个,那就是~~~

路由文件中的路径有问题

在路由文件中所有的路径前面加上服务器下项目所在的文件名即可,当然也包括和this.$router.push()中的路径,不然又是不讲道理的。

这只是在Nginx服务器下的一种解决方案,至于别的服务器应该也是同理的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

原文链接:https://www.f2er.com/vue/30345.html

猜你在找的Vue相关文章