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 相关文章推荐
JQuery文本框高亮显示插件代码
Apr 02 Javascript
js使用正则实现ReplaceAll全部替换的方法
Aug 22 Javascript
jQuery获得子元素个数的方法
Apr 14 Javascript
angular.js分页代码的实例
Jul 27 Javascript
JavaScript变量作用域_动力节点Java学院整理
Jun 27 Javascript
实战node静态文件服务器的示例代码
Mar 08 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
May 06 Javascript
详解js中Array的方法及技巧
Sep 12 Javascript
css配合JavaScript实现tab标签切换效果
Oct 11 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
Jul 02 Javascript
JavaScript常用工具函数汇总(浏览器环境)
Sep 17 Javascript
vue $router和$route的区别详解
Dec 02 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 excel类 phpExcel使用方法介绍
2010/08/21 PHP
PHP如何实现跨域
2016/05/30 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
2016/10/17 PHP
浅谈php(codeigniter)安全性注意事项
2017/04/06 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
JavaScript/jQuery 表单美化插件小结
2012/02/14 Javascript
JS长整型精度问题实例分析
2015/01/13 Javascript
js中对函数设置默认参数值的3种方法
2015/10/23 Javascript
bootstrap3 兼容IE8浏览器!
2016/05/02 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
微信小程序canvas动态时钟
2020/10/22 Javascript
对python中return和print的一些理解
2017/08/18 Python
Python实现的FTP通信客户端与服务器端功能示例
2018/03/28 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
python中的字符串内部换行方法
2018/07/19 Python
Django 表单模型选择框如何使用分组
2019/05/16 Python
python3 下载网络图片代码实例
2019/08/27 Python
python模拟实现斗地主发牌
2020/01/07 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
HTML5 CSS3新的WEB标准和浏览器支持
2009/07/16 HTML / CSS
Origins悦木之源香港官网:雅诗兰黛集团高端植物护肤品牌
2018/03/21 全球购物
瑞士设计师家具和家居饰品网上商店:Bruno Wickart
2019/03/18 全球购物
介绍Java的内部类
2012/10/27 面试题
大二学生学习个人自我评价
2014/01/19 职场文书
促销活动方案模板
2014/02/24 职场文书
节约用水标语
2014/06/11 职场文书
物业消防安全责任书
2014/07/23 职场文书
业务内勤岗位职责
2015/04/13 职场文书
追悼会悼词大全
2015/06/23 职场文书
入党后的感想
2015/08/10 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
SpringBoot 整合mongoDB并自定义连接池的示例代码
2022/02/28 MongoDB