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 相关文章推荐
ImageFlow可鼠标控制图片滚动
Jan 30 Javascript
JavaScript面向对象程序设计三 原型模式(上)
Dec 21 Javascript
JS格式化数字金额用逗号隔开保留两位小数
Oct 18 Javascript
JavaScript中的立即执行函数表达式介绍
Mar 15 Javascript
浅谈js中的闭包
Mar 16 Javascript
防止重复发送 Ajax 请求
Feb 15 Javascript
Vue组件通信之Bus的具体使用
Dec 28 Javascript
JS温故而知新之变量提升和时间死区
Jan 27 Javascript
在vue中使用jsx语法的使用方法
Sep 30 Javascript
VUE实现密码验证与提示功能
Oct 18 Javascript
js实现弹幕墙效果
Dec 10 Javascript
vue如何清除浏览器历史栈
May 25 Vue.js
详解小程序中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简单实现快速排序的方法
2015/04/04 PHP
Symfony2创建页面实例详解
2016/03/18 PHP
php显示页码分页类的封装
2017/06/08 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
使两个iframe的高度与内容自适应,且相等
2006/11/20 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
JQuery的html(data)方法与<script>脚本块的解决方法
2010/03/09 Javascript
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
利用cookie记住背景颜色示例代码
2013/11/04 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
搭建pomelo 开发环境
2014/06/24 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
jQuery实现的登录浮动框效果代码
2015/09/26 Javascript
基于js实现微信发送好友如何分享到朋友圈、微博
2015/11/30 Javascript
AngularJS 模型详细介绍及实例代码
2016/07/27 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
webpack 模块热替换原理
2018/04/09 Javascript
Angular6 正则表达式允许输入部分中文字符
2018/09/10 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
python使用内存zipfile对象在内存中打包文件示例
2014/04/30 Python
python中requests小技巧
2017/05/10 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
Python实现平行坐标图的两种方法小结
2019/07/04 Python
英国香水店:The Perfume Shop
2017/03/27 全球购物
Europcar比利时:租车
2019/08/26 全球购物
存储过程和sql语句的优缺点
2014/07/02 面试题
企业行政文员岗位职责
2013/12/03 职场文书
缴纳养老保险的证明
2014/01/10 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
社会实践活动总结范文
2014/07/03 职场文书
公共机构节能宣传周活动总结
2014/07/09 职场文书
聊聊SpringBoot自动装配的魔力
2021/11/17 Java/Android
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL
python神经网络Xception模型
2022/05/06 Python