当前位置: 首页 > news >正文

Vue SPA的基本实现原理


通常 SPA 中前端路由有2种实现方式:

  • window.history
  • location.hash
    下面就来介绍下这两种方式具体怎么实现的

一.history

1.history基本介绍

window.history 对象包含浏览器的历史,window.history 对象在编写时可不使用 window 这个前缀。history是实现SPA前端路由是一种主流方法,它有几个原始方法:
history.back() - 与在浏览器点击后退按钮相同
history.forward() - 与在浏览器中点击按钮向前相同
history.go(n) - 接受一个整数作为参数,移动到该整数指定的页面,比如go(1)相当于forward(),go(-1)相当于back(),go(0)相当于刷新当前页面
如果移动的位置超出了访问历史的边界,以上三个方法并不报错,而是静默失败
在HTML5,history对象提出了 pushState() 方法和 replaceState() 方法,这两个方法可以用来向历史栈中添加数据,就好像 url 变化了一样(过去只有 url 变化历史栈才会变化),这样就可以很好的模拟浏览历史和前进后退了,

相关文章:

  • web页面透明度的问题
  • 微信内置浏览器在IOS设备上的兼容性问题
  • VSCode中编写Python使用默认配置存在的路径问题
  • 智能控制导论 # 绪论
  • 智能控制导论 # 专家控制
  • C++中的水平访问,垂直访问是什么
  • C++ 子类型关系
  • 智能控制导论 # 专家控制实例 - 专家PID控制
  • 通俗易懂的自动控制原理 # 绪论
  • IIS8.5 部署时报错:HTTP 401.3
  • 重写和反向代理的区别
  • 基于C++和OpenGL (GLUT) 实现太阳系行星系统
  • 微信小程序云开发 # 1 云数据库
  • 微信小程序 input 输入校验
  • 纯前端打造markdown编辑器
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 2017-09-12 前端日报
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • CentOS 7 防火墙操作
  • Docker下部署自己的LNMP工作环境
  • express + mock 让前后台并行开发
  • isset在php5.6-和php7.0+的一些差异
  • 观察者模式实现非直接耦合
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 王永庆:技术创新改变教育未来
  • 一起参Ember.js讨论、问答社区。
  • 应用生命周期终极 DevOps 工具包
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #Linux(make工具和makefile文件以及makefile语法)
  • #QT项目实战(天气预报)
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #在 README.md 中生成项目目录结构
  • $.ajax,axios,fetch三种ajax请求的区别
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (SpringBoot)第七章:SpringBoot日志文件
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET 服务 ServiceController
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [BT]BUUCTF刷题第9天(3.27)
  • [BZOJ 4129]Haruna’s Breakfast(树上带修改莫队)
  • [CF703D]Mishka and Interesting sum/[BZOJ5476]位运算
  • [Django 0-1] Core.Email 模块