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写的一个自定义弹出式对话框代码
Jan 17 Javascript
遍历jquery对象的代码分享
Nov 02 Javascript
从面试题学习Javascript 面向对象(创建对象)
Mar 30 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
Apr 07 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
Oct 18 Javascript
判断javascript的数据类型(示例代码)
Dec 11 Javascript
jQuery中mouseover事件用法实例
Dec 26 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
Dec 18 Javascript
js仿新浪微博消息发布功能
Feb 17 Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
Mar 15 Javascript
js实现3D粒子酷炫动态旋转特效
Sep 13 Javascript
javascript实现多边形碰撞检测
Oct 24 Javascript
详解小程序中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数组总结篇(一)
2008/09/30 PHP
深入php define()函数以及defined()函数的用法详解
2013/06/05 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
2016/03/16 PHP
PHP如何使用Memcached
2016/04/05 PHP
php源码的安装方法和实例
2019/09/26 PHP
js控制框架刷新
2008/08/01 Javascript
jQuery编辑器KindEditor4.1.4代码高亮显示设置教程
2013/03/01 Javascript
jquery ajax对特殊字符进行转义防止js注入使用示例
2013/11/21 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
2014/02/19 Javascript
自写的jQuery异步加载数据添加事件
2014/05/15 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
谈谈JavaScript异步函数发展历程
2015/09/29 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python实现视频分帧效果
2019/05/31 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
2020/05/18 Python
python属于软件吗
2020/06/18 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
财经学院自荐信范文
2014/02/02 职场文书
开朗女孩的自我评价
2014/02/10 职场文书
大课间活动实施方案
2014/03/06 职场文书
2014年清明节寄语
2014/04/03 职场文书
农林经济管理专业自荐信
2014/09/01 职场文书
房屋租赁合同补充协议
2014/10/11 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
订货会主持词
2015/07/01 职场文书
Nginx代理同域名前后端分离项目的完整步骤
2021/03/31 Servers
详解在OpenCV中如何使用图像像素
2022/03/03 Python
多人盗宝《绿林侠盗》第三赛季4.5上线 跨平台实装
2022/04/03 其他游戏