We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
有关单页面应用前端路由系统的实现原理与源码解析网上有很多好的文章可以学习,也就没必要自己总结了。在此给几个文章链接,供将来回顾。 剖析单页面路由实现原理
这个总结想写的是自己对一个问题的思考。 问题是:当我们使用单页面路由时,用户点击浏览器的前进后退按钮,浏览器是否会发请求刷新页面?
先说结论:有时会,有时不会。
那么,什么时候会刷新,什么时候不刷新呢? 想要明白这个问题,首先得确保自己已经了解了前端路由框架的实现原理。
我们分情况讨论上述问题:
由于hash路由中的hash变化并不会触发浏览器对页面的更新操作,所以在单页面系统中前进与后退操作也不会引起浏览器对页面的刷新
一般情况下,使用browserRouter时,前进与后退不会引起刷新。但是,这是有条件的。 只有当你的历史记录是由pushState或者replaceState这两个api触发的情况下,前进后退才不会发起请求。如果在你的历史记录的堆栈中,有一条记录是直接在浏览器的地址栏中回车访问的,那么相邻这条历史记录的前后跳转,都会发起请求。 所以我猜测,浏览器对于不同的地址跳转行为有不同的标记,他会根据这个标记,判断是否需要发送请求刷新页面。
ps:以上结论在chrome下验证过。解释为个人猜测,并未通过文档或标准去验证。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
有关单页面应用前端路由系统的实现原理与源码解析网上有很多好的文章可以学习,也就没必要自己总结了。在此给几个文章链接,供将来回顾。
剖析单页面路由实现原理
这个总结想写的是自己对一个问题的思考。
问题是:当我们使用单页面路由时,用户点击浏览器的前进后退按钮,浏览器是否会发请求刷新页面?
先说结论:有时会,有时不会。
那么,什么时候会刷新,什么时候不刷新呢?
想要明白这个问题,首先得确保自己已经了解了前端路由框架的实现原理。
我们分情况讨论上述问题:
使用hashRouter时
由于hash路由中的hash变化并不会触发浏览器对页面的更新操作,所以在单页面系统中前进与后退操作也不会引起浏览器对页面的刷新
使用browserRouter时
一般情况下,使用browserRouter时,前进与后退不会引起刷新。但是,这是有条件的。
只有当你的历史记录是由pushState或者replaceState这两个api触发的情况下,前进后退才不会发起请求。如果在你的历史记录的堆栈中,有一条记录是直接在浏览器的地址栏中回车访问的,那么相邻这条历史记录的前后跳转,都会发起请求。
所以我猜测,浏览器对于不同的地址跳转行为有不同的标记,他会根据这个标记,判断是否需要发送请求刷新页面。
ps:以上结论在chrome下验证过。解释为个人猜测,并未通过文档或标准去验证。
The text was updated successfully, but these errors were encountered: