博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue-router的HTML5 History 模式设置
阅读量:6968 次
发布时间:2019-06-27

本文共 1753 字,大约阅读时间需要 5 分钟。

hot3.png

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

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

const router = new VueRouter({ mode: 'history', routes: [...]})

当你使用 history 模式时,URL 就像正常的 url,例如 就是长这样的!

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

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

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

先给一个官方标准版配置的传送门,请戳这里→ 

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

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

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

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

server{  listen 80;  server_name oursite.com;  location /test/ {          alias /usr/local/test/;    index index.htm index.html;    #上面的就是一些常规配置,下面这个才是重点    try_files $uri $uri/ /index.html;     #这里没有采用官方给出处理404错误页面的方案    #方案一(把所有没有后缀名的请求如果404都跳转到index.html,我们没有采用)    #error_page 404 /test/index.html;     #方案二(404的方式,不是特别完美。会有浏览器留下404的状态(容易被第三方劫持),以下方式可以避免被第三方劫持!)    if (!-e $request_filename) {      rewrite ^/(.*) /test/index.html last;      break;    }//前端全栈学习交流圈:866109386  }//帮助1-3年前端人员}//突破技术瓶颈,提升思维能力

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

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

路由文件中的路径有问题

const router = new VueRouter({ mode: 'history', routes: [  { path: '/test/', component: YourComponent },  { path: '/test/a', component: YourComponent },  { path: '/test/b:x', component: YourComponent } ]})

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

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

转载于:https://my.oschina.net/u/3970421/blog/2877410

你可能感兴趣的文章
Javascript单线程实现
查看>>
火电电厂相关业务知识
查看>>
Magento 模版路径
查看>>
Taking water into exams could boost grades 考试带瓶水可以提高成绩?
查看>>
一对多和多对一的关系,用mybatis写
查看>>
七 递归与二分法、匿名函数、内置函数
查看>>
hdu 1001
查看>>
JavaScript速记
查看>>
两栏布局,三栏布局,等高布局,流式布局
查看>>
CSS3弹性盒模型之box-orient & box-direction
查看>>
Codeforces Beta Round #77 (Div. 2 Only) A. Football【字符串/判断是否存在连续7个0或7个1】...
查看>>
洛谷 P1865 A % B Problem[筛素数/前缀和思想/区间质数个数]
查看>>
动态规划题库
查看>>
[30期] 第一个项目
查看>>
[31期] 第一个项目结束之际-->俺很高调但很真诚地感谢一个人-->涛爷
查看>>
回头再看第一次项目
查看>>
sql 50题
查看>>
Unity3D编辑器之重写Hierarchy的右键菜单
查看>>
有无关键字new的区别
查看>>
svn idea使用
查看>>