美文网首页
2019-05-29 vue-router的两种模式的区别

2019-05-29 vue-router的两种模式的区别

作者: Kason晨 | 来源:发表于2019-05-29 10:02 被阅读0次

    1、大家都知道vue是一种单页应用,单页应用就是仅在页面初始化的时候加载相应的html/css/js一单页面加载完成,不会因为用户的操作而进行页面的重新加载或者跳转,用javascript动态的变化html的内容

    优点: 良好的交互体验,用户不需要刷新页面,页面显示流畅, 良好的前后端工作分离模式,减轻服务器压力,
    缺点: 不利于SEO,初次加载耗时比较多


    2、hash模式
    vue-router默认的是hash模式—使用URL的hash来模拟一个完整的URL,于是当URL改变的时候,页面不会重新加载,也就是单页应用了,当#后面的hash发生变化,不会导致浏览器向服务器发出请求,浏览器不发出请求就不会刷新页面,并且会触发hasChange这个事件,通过监听hash值的变化来实现更新页面部分内容的操作

    对于hash模式会创建hashHistory对象,在访问不同的路由的时候,会发生两件事:
    HashHistory.push()将新的路由添加到浏览器访问的历史的栈顶,和HasHistory.replace()替换到当前栈顶的路由

    3、history模式

    主要使用HTML5的pushState()和replaceState()这两个api来实现的,pushState()可以改变url地址且不会发送请求,replaceState()可以读取历史记录栈,还可以对浏览器记录进行修改

    window.history.pushState(stateObject, title, URL)
    window.history.replaceState(stateObject, title, URL)

    [图片上传失败...(image-81ee5f-1559095240818)]

    包括back,forward , go 三个方法
    history.go(-2);//后退两次
    history.go(2);//前进两次
    history.back(); //后退
    hsitory.forward(); //前进

    区别:

    前面的hash变化,你只能改变#后面的url片段。而history模式的pushState设置的新URL可以是与当前URL同源的任意URL。
    history模式则会将URL修改得就和正常请求后端的URL一样,如后端没有配置对应/user/id的路由处理,则会返回404错误

    相关文章

      网友评论

          本文标题:2019-05-29 vue-router的两种模式的区别

          本文链接:https://www.haomeiwen.com/subject/peketctx.html