vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > vue路由的前进和后退

vue中路由的前进和后退问题

作者:坚书直实i

这篇文章主要介绍了vue中路由的前进和后退问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

vue路由的前进和后退

this.$router.back()  // 返回上一级
this.$router.go(-1)  // 也是返回上一级   1就是前进   -1往后回退一级  -2 是往后回退二级
this.$router.push("aa") // 路由前进  aa是路由code

浏览器的刷新和回退

location.reload(参数)  // true 是强制刷新相当于Ctrl+F5     false  刷新相当于F5
location.href = ""    // 相当于浏览器地址栏的地址,也可以实现页面跳转
 
 
history.back()  // 后退
history.go(-1)  // 后退
 
 
history.go(1)  // 前进
history.forward()  // 前进
 
 
history.go(0)  // 刷新
location.reload()  // 刷新

vue中路由原理

hash模式下

<body>
  <!-- router-link -->
  <a href="#/" rel="external nofollow" >首页</a>
  <a href="#about" rel="external nofollow" >关于</a>
    <!-- router-view -->
    <div id="view"></div>
</body>
<script>
  // 路由原码是怎么实现的
  // hash模式下
  // 监听浏览器的hashchange方法,对应拿到路径,渲染对应组件;
  document.addEventListener('DOMContentLoaded',()=>{
    view.innerHTML = location.hash.slice(1);
  })
  window.addEventListener('hashchange',() => {
    console.log('hashchange');
    view.innerHTML = location.hash.slice(1);
  })

history模式下

// history模式下
// 如果不用a标签 用span元素则
// h5中的pushState
function routerChange(pathname){
    history.pushState(null,null,pathname)
    view.innerHTML = location.pathname;
  }
  window.addEventListener('popstate',()=>{
    view.innerHTML = location.pathname;

  })

两个的区别:

1.hash通过锚点跳转,# url会更改,浏览器可以进行前进后退,浏览器不断刷新,不和服务器端交流(主要通过hash)

2.history无锚点无hash,需要服务端配合

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文