vue前端路由原理

news/2024/7/10 1:08:08 标签: vue

前言:看完此文章,让你对前端路由原理有一个比较深的了解,必能掌握路由原理,面试必过

路由实现原理

通过改变URL,在不重新请求页面的情况下,更新页面视图

前端路由的两种模式

  1. Hash------默认值,利用 URL 中的hash("#") 、
  2. History------利用URL中的路径(/home)

在项目中如何设置路由模式

const router=new VueRouter({
    mode:'history',
    routes:[...]
})

通过model来设置路由模式,默认是Hash模式

下面说下两种路由模式是如何实现的

Hash

  1. hash是URL中hash(#)以及后面的那部分,常用作锚点在页面内进行导航,改变URL中的hash
  2. 通过onhashchange事件监听URL的变化。改变URL的方式有以下几种:1.通过浏览器前进后退改变URL,2.通过标签改变URL,3.通过window。location改变URL。这几种情况改变URL都会触发hashchange事件

History

  1. history提供pushstatereplacestate两个方法,这两个方法改变URL的path部分不会引起页面的刷新
    2.history提供类似onhashchange事件的popstate事件,但是popstate事件有些不同,通过浏览器前进后退改变URL时会触发popstate事件,通过pushstate/replace或标签改变URL不会出发popstate事件,好在我们可以拦截pushstate/relacestate的调用和标签的点击事件在检测URL变化。所以监听URL变化可以实现,只是没有hashchange那么好用

最后说下两种模式的区别

1.pushstate设置新的URL可以是与当前URL同源的任意URL,而hash只可以修改#后面的部分,只能设置与当前同文档的URL
2. pushstate通过state.object可以添加任意类型的数据到记录中,而hash只可以添加短文字符串
3. pushstate可以额外设置title属性供后续使用
4. history模式则会将URL修改的就和正常请求后端的URL一样,如果后端没有配置对应的ULR路由处理,则会返回404错误

注意:此内容属实比较枯燥,没有花里胡哨,但内容比较实用,希望大家勿喷


http://www.niftyadmin.cn/n/1836012.html

相关文章

dos下 java编译不通过问题

我在编译我的第一个JAVA程序"Hello world" 时出现一个问题 如图所示: 问题出现在环境的配置那里。 把原来的配置修改下就OK呢。 CLASSPATH,值:“.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar”, 注意前面的“.;…

linux下关闭ipv6提高网络访问速度

这个是一个真实的实例。一个是运行java web应用的linux服务器,一个是运行oralcle数据库的linux服务器。java 应用的访问速度总是很慢。 因为这个java系统是一个成熟的产品,所以本身有问题的可能性很小。 经过测试发现,2台服务器之间&#xff…

【C#】[窗体]窗体渐显

第一种。利用计时器Timer和窗体的透明度opacity实现: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace 窗…

docker Error response from daemon: Get https://registry-1.docker.io/v2/library/centos/manifests/late

报错: 解决方法: 第一步:通过dig 114.114.114.114 registry-1.docker.io找到可用IP 又报错 安装: yum -y install bind-utils 第二步:尝试修改/etc/hosts强制docker.io相关的域名解析到其它可用IP vim /etc/hosts …

vue2.0和3.0的区别

1. vue2和vue3双向数据绑定原理发生了改变 vue2 的双向数据绑定是利用ES5 的一个 API Object.definePropert()对数据进行劫持 结合 发布订阅模式的方式来实现的。vue3 中使用了 es6 的 ProxyAPI 对数据代理。 相比于vue2.x,使用proxy的优势如下 defineProperty只能…

Windows下硬盘快速转换成ntfs格式方法

首先要确保你想转换的分区硬盘内没有你的重要数据。 其次打开“开始”-”运行”,输入CMD,然后再跳出的命令行内输入convert *:/fs:ntfs回车即可,*代表你要转换的盘符。比如d盘就是convert d:/fs:ntfs,以此类推。 此方法运用在windows系统下&a…

[原创]HandlerSocket系列(一):由来

新的技术,几乎都是由需求驱动产生的。在仔细深入研究HandlerSocket之前,我觉得有必要先了解一下它所处的历史背景及其它想解决什么样的问题。我想这应该是最关键的,也是做这方面研究和技术选型时第一个应该关注的要点。 先来说一下它的作者Yo…

win7如何清理图标缓存

rem 关闭Windows外壳程序explorer taskkill /f /im explorer.exe rem 清理系统图标缓存数据库 attrib -h -s -r "%userprofile%\AppData\Local\IconCache.db" del /f "%userprofile%\AppData\Local\IconCache.db" attrib /s /d -h -s -r "%userprofil…