SPA中的hash和history

一、hash 和 history

SPA 即单页面应用,路由改变时不需要重新刷新整个浏览器标签页,为了满足这一需求就需要使用 hash 或 history 模式,目前 Vue、React、Angular 都支持这两种模式。

hash

url 中会带有 # 号,# 号后的路由改变不会重新加载页面,但会记录在 window.hisotry 中,因此可以使用 history.back() 等方法,监听则通过 window.onhashchange() 方法。

history

hisroty:利用 history.pushState() 和 history.replaceState() 方法,相比 hash 更加美观。

二、出现的问题

项目部署生产后,hash 模式能够正常使用,而 history 模式访问不到资源,反复检查路由配置确认没错后,检索到是 history 模式需要正确的 nginx 配置。

这一问题点上二者的区别是 hash 的改变不会发生请求,因此不影响服务器端,所以 nginx 不会拦截,而 history 模式则需要设置可访问的配置。

比如 http://www.ppdouble.com/home 如果不进行配置,那么 nginx 默认会去找服务器目录下的 home 文件,而我们想要的效果则是依旧寻找 index 文件,home 则交给前端去处理,使用 try_files 即可实现该效果。

location / { 
 root /www/wwwroot; 
 index index.html; 
 try_files $uri $uri/ /index.html; 
}

点此访问我的个人博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值