vue-router的两种模式的区别


Posted in Javascript onMay 30, 2019

1、大家都知道vue是一种单页应用,单页应用就是仅在页面初始化的时候加载相应的html/css/js一单页面加载完成,不会因为用户的操作而进行页面的重新加载或者跳转,用javascript动态的变化html的内容

优点: 良好的交互体验,用户不需要刷新页面,页面显示流畅, 良好的前后端工作分离模式,减轻服务器压力,
缺点: 不利于SEO,初次加载耗时比较多

2、hash模式

vue-router默认的是hash模式—使用URL的hash来模拟一个完整的URL,于是当URL改变的时候,页面不会重新加载,也就是单页应用了,当#后面的hash发生变化,不会导致浏览器向服务器发出请求,浏览器不发出请求就不会刷新页面,并且会触发hasChange这个事件,通过监听hash值的变化来实现更新页面部分内容的操作

对于hash模式会创建hashHistory对象,在访问不同的路由的时候,会发生两件事:
HashHistory.push()将新的路由添加到浏览器访问的历史的栈顶,和HasHistory.replace()替换到当前栈顶的路由

vue-router的两种模式的区别

vue-router的两种模式的区别

3、history模式

主要使用HTML5的pushState()和replaceState()这两个api来实现的,pushState()可以改变url地址且不会发送请求,replaceState()可以读取历史记录栈,还可以对浏览器记录进行修改

window.history.pushState(stateObject, title, URL)
 window.history.replaceState(stateObject, title, URL)

包括back,forward , go 三个方法

history.go(-2);//后退两次
history.go(2);//前进两次
history.back(); //后退
hsitory.forward(); //前进

区别:

前面的hashchange,你只能改变#后面的url片段。而pushState设置的新URL可以是与当前URL同源的任意URL。
history模式则会将URL修改得就和正常请求后端的URL一样,如后端没有配置对应/user/id的路由处理,则会返回404错误

总结

以上所述是小编给大家介绍的vue-router的两种模式的区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
javascript 鼠标滚轮事件
Apr 09 Javascript
js 判断脚本加载完毕的代码
Jul 13 Javascript
js获取html页面节点方法(递归方式)
Dec 13 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
Dec 17 Javascript
jQuery插件jquery-barcode实现条码打印的方法
Nov 25 Javascript
jQuery插件扩展extend的简单实现原理
Jun 24 Javascript
微信小程序 数据交互与渲染实例详解
Jan 21 Javascript
JS中实现函数return多个返回值的实例
Feb 21 Javascript
node使用Koa2搭建web项目的方法
Oct 17 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
Jul 07 Javascript
JS字典Dictionary类定义与用法示例
Feb 01 Javascript
jQuery实现可编辑的表格
Dec 11 jQuery
详解小程序中h5页面onShow实现及跨页面通信方案
May 30 #Javascript
JS通过ajax + 多列布局 + 自动加载实现瀑布流效果
May 30 #Javascript
全面分析JavaScript 继承
May 30 #Javascript
浅谈Express.js解析Post数据类型的正确姿势
May 30 #Javascript
vue组件三大核心概念图文详解
May 30 #Javascript
详解一次Vue低版本安卓白屏问题的解决过程
May 30 #Javascript
基于iview的router常用控制方式
May 30 #Javascript
You might like
怎样在php中使用PDF文档功能
2006/10/09 PHP
在PHP中使用Sockets 从Usenet中获取文件
2008/01/10 PHP
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
php用ini_get获取php.ini里变量值的方法
2015/03/04 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
2016/12/19 PHP
php实现的二分查找算法示例
2017/06/20 PHP
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
自己动手制作jquery插件之自动添加删除行的实现
2011/10/13 Javascript
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
JavaScript中的eval()函数详解
2013/08/22 Javascript
js获取url中"?"后面的字串方法
2014/05/15 Javascript
JS常用函数使用指南
2014/11/23 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
2019/05/18 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
Python中常用操作字符串的函数与方法总结
2016/02/04 Python
Python环境下搭建属于自己的pip源的教程
2016/05/05 Python
python difflib模块示例讲解
2017/09/13 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
利用Python求阴影部分的面积实例代码
2018/12/05 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
详解python实现交叉验证法与留出法
2019/07/11 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
使用虚拟环境打包python为exe 文件的方法
2019/08/29 Python
Python生成词云的实现代码
2020/01/14 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
Pam & Gela官网:美国性感前卫女装品牌
2018/07/19 全球购物
地球一小时倡议书
2014/04/15 职场文书
机关作风整顿个人整改措施2014
2014/09/17 职场文书
vue-element-admin项目导入和导出的实现
2021/05/21 Vue.js
浅谈Go语言多态的实现与interface使用
2021/06/16 Golang
python实现简单的三子棋游戏
2022/04/28 Python