首页 > 其他分享 >vue路由的三种模式

vue路由的三种模式

时间:2022-11-02 10:33:37浏览次数:53  
标签:vue hash 模式 window 三种 浏览器 路由 页面


title: Vue路由组件的三种模式

Vue组件路由中存在三种模式,在这对其介绍加深理解,三种模式分别为: hash模式,history模式,abstract路由模式

hash模式:浏览器服务器兼容性好,安全性高,使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,hash值未改变时页面不会重新加载,其显示的网路路径中会有 “#” 号

hsitory模式:对兼容性有要求,页面主动刷新会重新请求服务器,需要进行一些配置,否则可能报错,没#更加美观

1.hash模式

为什么叫做hash模式呢,因为是通过监听hash值来执行对应的js来改变URL地址,在地址后面追加了一个#号,通过改变hash值的方式实现一个页面跳转的方式

  1. hash指的是地址中#号以及后面的字符,也称为散列值。hash也称作锚点,本身是用来做页面跳转定位的。如http://localhost/index.html#abc,这里的#abc就是hash;
  2. 散列值是不会随请求发送到服务器端的,所以改变hash,不会重新加载页面;
  3. 监听 window 的 hashchange 事件,当散列值改变时,可以通过 location.hash 来获取和设置hash值;
  4. location.hash值的变化会直接反应到浏览器地址栏;

触发hashchange事件的几种情况:

  • 浏览器地址栏散列值的变化(包括浏览器的前进、后退)会触发window.location.hash值的变化,从而触发onhashchange事件;
  • 当浏览器地址栏中URL包含哈希如 http://www.baidu.com/#home,这时按下输入,浏览器发送http://www.baidu.com/请求至服务器,请求完毕之后设置散列值为#home,进而触发onhashchange事件;
  • 当只改变浏览器地址栏URL的哈希部分,这时按下回车,浏览器不会发送任何请求至服务器,这时发生的只是设置散列值新修改的哈希值,并触发onhashchange事件;
  • html中<a>标签的属性 href 可以设置为页面的元素ID如 #top,当点击该链接时页面跳转至该id元素所在区域,同时浏览器自动设置 window.location.hash 属性,地址栏中的哈希值也会发生改变,并触发onhashchange事件;
//设置 url 的 hash,会在当前url后加上'#abc'
window.location.hash='abc';
let hash = window.location.hash //'#abc'

window.addEventListener('hashchange',function(){
	//监听hash变化,点击浏览器的前进后退会触发
})

优点:在安全性方面更强大,是最安全的模式,兼容所有的浏览器和服务器

2.history模式

history模式:利用history API实现url地址改变,网页内容改变

主要有两个属性:

History.length:当前窗口访问过的网址数量(包括当前网页)。

History.state:History 堆栈最上层的状态值,可以理解成历史记录最上层的值,可以使用改变state的方法实现一个跳转,但是并不会刷新页面

页面进行跳转的三种方法:History.back()、History.forward()、History.go()

3.abstract 路由模式(了解即可)

abstract 是vue路由中的第三种模式,本身是用来在不支持浏览器API的环境中,充当fallback,而不论是hash还是history模式都会对浏览器上的url产生作用,本文要实现的功能就是在已存在的路由页面中内嵌其他的路由页面,而保持在浏览器当中依旧显示当前页面的路由path,这就利用到了abstract这种与浏览器分离的路由模式。

标签:vue,hash,模式,window,三种,浏览器,路由,页面
From: https://www.cnblogs.com/YYang333/p/16850227.html

相关文章

  • vue收集表单数据
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metahttp-e......
  • vue中的相对和绝对路径的问题
    有任何问题都可以留言咨询。相对路径凡是相对路径,都会被webpack处理。 以.开头,都会作为一个相对模块来解释。比如:url(./test.png)会被翻译为require('./test.pn......
  • Vue2项目中的一些问题
    1. vue创建项目后,在入口文件main.js中使用template模板,项目启动时报错Youareusingtheruntime-onlybuildofVuewherethetemplatecompilerisnotavailable.Eit......
  • vue的几个提效技巧
    1.动态组件<component:is='组件名'></component>结合v-for循环使用使用环境如图,这是一个v-for渲染的列表(只是目前这个版块才刚开始做,目前只有一个),圆圈内的就是一......
  • vue实战中的一些小技巧
    能让你首次加载更快的路由懒加载,怎么能忘?路由懒加载可以让我们的包不需要一次把所有的页面的加载进来,只加载当前页面的路由组件就行。举个......
  • vue实战-深入响应式数据原理
    本文将带大家快速过一遍Vue数据响应式原理,解析源码,学习设计思路,循序渐进。数据初始化_init在我们执行newVue创建实例时,会调用如下构造函数,在该函数内部调用this._init(......
  • vue源码分析-插槽原理
    Vue组件的另一个重要概念是插槽,它允许你以一种不同于严格的父子关系的方式组合组件。插槽为你提供了一个将内容放置到新位置或使组件更通用的出口。这一节将围绕官网对插......
  • vue源码分析-挂载流程和模板编译
    前面几节我们从newVue创建实例开始,介绍了创建实例时执行初始化流程中的重要两步,配置选项的资源合并,以及响应式系统的核心思想,数据代理。在合并章节,我们对Vue丰富的选项......
  • 路由器的基本配置
    一、实验目标掌握路由器几种常用配置方法;掌握采用Console线缆配置路由器的方法;掌握采用Telnet方式配置路由器的方法;熟悉路由器不同的命令行操作模式以及各种模......
  • Vue的computed和watch的区别是什么?
    一、computed介绍computed用来监控自己定义的变量,该变量在data内没有声明,直接在computed里面定义,页面上可直接使用。//基础使用{{msg}}<inputv-model="name"/>......