首先了解下 window.location对象

打开浏览器在控制台打印

 路由在未交由前端管理之前都是后台控制

你请求不同的路径,后台就甩回不同的html页面回来作为回应。你请求a我就给你a,你请求不存在我就给你个404页面

vue-router就是只改变视图,不请求页面。你看到的是假象。实际上请求的都是index.html。

1、Hash模式: 
      hash(#)是URL 的锚点,代表的是网页中的一个位置,单单改变#后的部分,浏览器只会滚动到相应位置,不会重新加载网页,也就是说 #是用来指导浏览器动作的,对服务器端完全无用,HTTP请求中也不会不包括#;同时每一次改变#后的部分,都会在浏览器的访问历史中增加一个记录,使用”后退”按钮,就可以回到上一个位置;

2、History模式: 

    HTML5 History API提供了一种功能,能让开发人员在不刷新整个页面的情况下修改站点的URL,就是利用 history.pushState API 来完成 URL 跳转而无须重新加载页面;

也就是这俩货可以任由我们改,但是不刷新页面。

所以当我们在用vue-router 中的hash模式,最后打包生成的文件,不需要后台做什么更改。直接可以用、

但是History模式,后台部署时类似于nginx这种,就要加些代码、

 

比如这样子

location / {
  root  /Users/jhj/Desktop/mall;
  index index.html index.htm;
  try_files $uri $uri/ /index.html;
}

 这段代码的意思就是告诉服务器,前边请求啥你都去找index.html,其他你都不要干涉、

不加这段的话,当代码部署的时候就会发现你的路由失效了。不能刷新等等情况。

另外类似于微信支付等等一些接口,你的返回链接里不能有hash值、否则他从后边都给你截掉,这一截掉,瞬间傻屌。

所以强烈建议用历史模式

Logo

前往低代码交流专区

更多推荐