美文网首页
vue 路由模式

vue 路由模式

作者: 哼_ | 来源:发表于2022-01-06 18:56 被阅读0次

一般会当做面试题问

vue 有几种路由模式

  1. hash 模式
  2. history 模式

异同

  • hash模式:通过#号后面的内容的更改,触发hashchange事件,实现路由切换
  • history模式:通过pushState和replaceState切换url,触发popstate事件,实现路由切换,需要后端配合

深入了解一下事件

hash hashchange

1、hash即URL中"#"字符后面的部分。
  ①使用浏览器访问网页时,如果网页URL中带有hash,页面就会定位到id(或name)与hash值一样的元素的位置;
  ②hash还有另一个特点,它的改变不会导致页面重新加载;
  ③hash值浏览器是不会随请求发送到服务器端的;
  ④通过window.location.hash获取和设置hash。
  window.location.hash值的变化会直接反应到浏览器地址栏(#后面的部分会发生变化),同时,浏览器地址栏hash值的变化也会触发window.location.hash值的变化,从而触发onhashchange事件。


通过window.location.hash获取hash
修改 hash

2、hashchange事件(IE8已支持该事件)
  ①当URL的片段标识符更改时,将触发hashchange事件(跟在#符号后面的URL部分,包括#符号)
  ②hashchange事件触发时,事件对象会有hash改变前的URL(oldURL)和hash改变后的URL(newURL)两个属性:

window.addEventListener('hashchange',function(e) { console.log(e.oldURL);  console.log(e.newURL) },false);
代码
浏览器效果

监听hashchange 事件, 跳转到根路由的时候, 就会打印出新旧hash值.

history模式

官网解释

意思就是假设:
前端跳转的路由,是后端同学返回的, '/data/water'
但是前端没有配置这个静态路由, 就会直接返回 404 not found 页面.


类似这样的系统默认的404页面

so 需要前后端配合, 要么返回前端自己写的漂亮的404 页面, 要么是返回到项目首页. (返回首页也不是很友好, 可能会打断用户的操作思路和顺序)
就需要前端配置一个路由

前端路由js 配置

或者后端配置nginx 等等
参考配置: https://router.vuejs.org/zh/guide/essentials/history-mode.html#%E5%90%8E%E7%AB%AF%E9%85%8D%E7%BD%AE%E4%BE%8B%E5%AD%90

官方文档

关于history.pushState() 方法是做什么的, 这篇文章比较详细
https://blog.csdn.net/yexudengzhidao/article/details/101448168
可以了解一下,

总结

意思就是 history.pushState 给浏览器创造了一个历史记录, 你没访问过的历史记录, 然后回退的时候, 想去到这个没访问过的页面, 可以直接使用 history.go(-1)
比较方便.
以上

相关文章

  • 2020-06-03面试--vue基础篇

    1,vue的路由实现原理有哪几种 答案:Vue的路由实现:hash模式 和 history模式 hash模式:在浏...

  • 2020-06-03面试--vue基础篇

    ####1,vue的路由实现原理有哪几种 答案:Vue的路由实现:hash模式 和 history模式 hash模...

  • Vue-router路由

    vue 监听路由变化 vue-router 由hash向history模式变迁 什么是路由 后端路由:对于普通的网...

  • vue小总结

    MVVM模式: Vue就是基于MVVM模式实现的一套框架,在Vue中 路由 VUEX .vue文件

  • Vue核心插件之路由模式

    单页面应用的路由模式:哈希模式和history.vue路由原理:哈希模式(核心:锚点) 原理 安装使用(路由是以插...

  • vue-router源码初探

    路由模式 vue-router 提供了三种运行模式: hash: 使用 URL hash 值来作路由。默认模式。 ...

  • Vue Router路由插件

    Vue Router,路由插件。 #要点 hash模式和history模式的区别? 路由组件传参与props属性注...

  • Vue的两种路由模式

    在vue-router路由对象中,路由有两种模式:hash和history,而默认的是hash模式. hash路由...

  • nginx vue前后端分离配置示例

    vue + thinkphp vue为history路由模式,固定/api,/static前缀为php使用 vue...

  • 关于vue--路由(公众号开发总结)

    关于路由 在router.js中引入vue和vue-router 路由模式 前端路由就是一个前端不同页面的状态管理...

网友评论

      本文标题:vue 路由模式

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