关于vue-router的历史模式和hash模式
首先了解下 window.location对象打开浏览器在控制台打印路由在未交由前端管理之前都是后台控制你请求不同的路径,后台就甩回不同的html页面回来作为回应。你请求a我就给你a,你请求不存在我就给你个404页面vue-router就是只改变视图,不请求页面。你看到的是假象。实际上请求的都是index.html。1、Hash模式:hash(#)是URL...
首先了解下 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值、否则他从后边都给你截掉,这一截掉,瞬间傻屌。
所以强烈建议用历史模式
更多推荐
所有评论(0)