详谈vue中router-link和传统a链接的区别


Posted in Javascript onJuly 22, 2020

Vue-router是伴随着Vue框架出现的路由系统,它也是公认的一种优秀的路由解决方案。在使用Vue-router时候,我们常常会使用其自带的路径跳转组件Link,通过实现跳转,这和传统的何其相似!但它们到底有什么具体的区别呢?

官方中给出的解释是这样的:

<router-link> 比起写死的 <a href="..." rel="external nofollow" rel="external nofollow" > 会好一些,理由如下:

无论是 HTML5 history 模式还是 hash 模式,它的表现行为一致,所以,当你要切换路由模式,或者在 IE9 降级使用 hash 模式,无须作任何变动。

在 HTML5 history 模式下,router-link 会守卫点击事件,让浏览器不再重新加载页面。

当你在 HTML5 history 模式下使用 base 选项之后,所有的 to 属性都不需要写 (基路径) 了。

呃呃,只能说博主刚学时第一次并没有看懂(应该是之前的基础知识不牢固吧,看来之后得补补啦),于是去自行查阅啦:

<a href="..." rel="external nofollow" rel="external nofollow" >

W3C中是这样解释a标签的:

<a> 标签定义超链接,用于从一张页面链接到另一张页面。

从一张页面跳转到另一张页面,但从这里来说就违背了多视图的单页Web应用这个概念

通过a标签进行跳转,页面会被重新渲染,即相当于重新打开一个新的网页,体现为视觉上的“闪烁”(如果是本地的项目基本看不出来)

router-link

<router-link> 组件支持用户在具有路由功能的应用中 (点击) 导航。 通过 to 属性指定目标地址,默认渲染成带有正确链接的 <a> 标签,可以通过配置 tag 属性生成别的标签.。

通过router-link进行跳转不会跳转到新的页面,也不会重新渲染,它会选择路由所指的组件进行渲染,避免了重复渲染的“无用功”。

总结:对比<a>,router-link组件避免了不必要的重渲染,它只更新变化的部分从而减少DOM性能消耗

Vue的创新之处在于,它利用虚拟DOM的概念和diff算法实现了对页面的"按需更新",

Vue-router很好地继承了这一点,重渲染是我们不希望看到的,因为无论跳转到哪个页面,只需要渲染一次就够了。<Link>组件帮助我们实现了这个愿望

反观<a>标签,每次跳转都得重渲染一次,在一个浩大的项目里,这多么可怕!我们的"渲染"做了许多"无用功",而且消耗了大量弥足珍贵的DOM性能!

补充知识:使用vue中路由router-link中包含a标签

当vue中使用router-link包含a标签的时候,a标签会取代routerlink的值实现跳转,

<div class="list" v-for="(item,index) in listName" @click="toDetail(item.id)">
<p>{{item.name}}</p>
<p>{{item.address}}</p>
<p>{{item.distance}}米</p>
<a :href="getUrl(item.tel)" rel="external nofollow" rel="external nofollow" >图标{{item.tel}}</a>
</div>
<!--<router-link :to="{path:'detail',query:{id:item.id}}" tag="div" class="list" v-for="(item,index) in listName" @click="toDetail()">
<p>{{item.name}}</p>
<p>{{item.address}}</p>
<p>{{item.distance}}米</p>
<a :href="getUrl(item.tel)" rel="external nofollow" rel="external nofollow" >图标{{item.tel}}</a>
</router-link>-->

下面这个routerlink中a标签会替代router-link的使用

可以使用div加点击事件

2 当在vue中实现 a href="tel:1325425652" rel="external nofollow" 的时候,直接使用:href="tel" rel="external nofollow" +变量的方法不可以,

可以使用函数封装

getUrl(tel){
return "tel:"+tel;

},

以上这篇详谈vue中router-link和传统a链接的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript检查日期格式的函数[比较全]
Oct 17 Javascript
JQuery UI的拖拽功能实现方法小结
Mar 14 Javascript
JavaScript字符串String和Array操作的有趣方法
Dec 18 Javascript
dwz 如何去掉ajaxloading具体代码
May 22 Javascript
zTree插件下拉树使用入门教程
Apr 11 Javascript
jQuery文字横向滚动效果的实现代码
May 31 Javascript
jQuery ajax动态生成table功能示例
Jun 14 jQuery
javascript按钮禁用和启用的效果实例代码
Oct 29 Javascript
浅谈实现vue2.0响应式的基本思路
Feb 13 Javascript
回顾Javascript React基础
Jun 15 Javascript
echarts统计x轴区间的数值实例代码详解
Jul 07 Javascript
vue滑动吸顶及锚点定位的示例代码
May 10 Javascript
解决Vue router-link绑定事件不生效的问题
Jul 22 #Javascript
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
Jul 22 #Javascript
vue页面跳转实现页面缓存操作
Jul 22 #Javascript
ES2020系列之空值合并运算符 '??'
Jul 22 #Javascript
解决vue单页面 回退页面 keeplive 缓存问题
Jul 22 #Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
Jul 22 #Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
Jul 22 #Javascript
You might like
如何在PHP中使用Oracle数据库(1)
2006/10/09 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
2012/11/07 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
2014/05/04 PHP
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
非常实用的PHP常用函数汇总
2014/12/17 PHP
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
JavaScript中使用arguments获得函数传参个数实例
2014/08/27 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
EL表达式截取字符串的函数说明
2017/09/22 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
Webpack打包字体font-awesome的方法示例
2018/04/26 Javascript
小程序识别身份证,银行卡,营业执照,驾照的实现
2019/11/05 Javascript
JavaScript中Object、map、weakmap的区别分析
2020/12/15 Javascript
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
python之wxPython应用实例
2014/09/28 Python
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
Python使用redis pool的一种单例实现方式
2016/04/16 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
python编辑用户登入界面的实现代码
2018/07/16 Python
python按修改时间顺序排列文件的实例代码
2019/07/25 Python
Django 实现前端图片压缩功能的方法
2019/08/07 Python
Python logging模块写入中文出现乱码
2020/05/21 Python
如何用Python提取10000份log中的产品信息
2021/01/14 Python
HTML5之web workers_动力节点Java学院整理
2017/07/17 HTML / CSS
危爆物品安全大检查大整治工作方案
2014/05/03 职场文书
护士求职信
2014/07/05 职场文书
优秀班集体申报材料
2014/12/25 职场文书
意向协议书
2015/01/27 职场文书
护士辞职信怎么写
2015/02/27 职场文书
小学教师岗位职责
2015/04/02 职场文书
导游词之新疆-喀纳斯
2019/10/10 职场文书
详细聊聊vue中组件的props属性
2021/11/02 Vue.js
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python