Vue路由的两种模式hash和history


核心:更新视图,都不会重新请求页面,在发生改变的时候,都会在浏览器中新增一条记录,通过这个记录,来实现更新视图但是不请求后台

hash模式:(http://abc.com/#/hello),hash值为#/hello,包含在URL中,可通过 window.location.hash 获取。

      hash("#") 的作用是加载 URL 中指示网页中的位置。

      hash的改变事件可以监听:window.addEventListener("hashchange",funcRef,false);

      hash值(可以通过window.localtion.hash获取)每一次发生改变,浏览器都会在历史记录当中新增一个记录。

      hash(HashHistory)有两个方法,push()和replace()

      push()方法将新路由添加到历史记录的栈顶,replace()方法则是把当前路由替换成新的路由。

history模式:(),history模式需要后台配置支持。如果后端没有配置对应/user/id的路由处理,则会返回404错误。

      history(HTML5History)是浏览器历史记录栈提供的接口,通过back()、forward()、go()等方法,我们可以读取浏览器历史记录栈的信息,进行各种跳转操作。

      pushState()、replaceState() 使得我们可以对浏览器历史记录栈进行修改:

        window.history.pushState(stateObject,title,url)

        window.history.replaceState(stateObject,title,url)

      history的两个方法和hash的两个方法并没有什么区别

      history监听地址变化:window.onpopstate

 

两种模式的比较:

      1、history设置的新URL可以是同源的任意URL,而hash模式只能够修改#后面的部分,故只可设置与当前同文档的URL;

      2、history可以添加任意类型的数据到记录当中,hash模式只能够添加短字符串;

      3、history模式可以额外添加title属性,提供后续使用;

      4、history模式则会将URL修改得就和正常请求后端的URL一样,如后端没有配置对应/user/id的路由处理,则会返回404错误。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM