详谈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 相关文章推荐
如何简单地用YUI做JavaScript动画
Mar 10 Javascript
JavaScript开发时的五个注意事项
Dec 08 Javascript
javascript强大的日期函数代码分享
Sep 04 Javascript
使用jquery写个更改表格行顺序的小功能
Apr 29 Javascript
javascript垃圾收集机制的原理分析
Dec 08 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
Jan 14 Javascript
JS html时钟制作代码分享
Mar 03 Javascript
原生JS 实现的input输入时表格过滤操作示例
Aug 03 Javascript
vue解决使用$http获取数据时报错的问题
Oct 30 Javascript
Vue中img的src是动态渲染时不显示的解决
Nov 14 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
Jan 02 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
Nov 17 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中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
2010年最佳jQuery插件整理
2010/12/06 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
2015/09/14 Javascript
各式各样的导航条效果css3结合jquery代码实现
2016/09/17 Javascript
AngularJS执行流程详解
2017/02/17 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
BootStrap selectpicker后台动态绑定数据的方法
2017/07/28 Javascript
React-Native之定时器Timer的实现代码
2017/10/04 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
JS数组扁平化、去重、排序操作实例详解
2020/02/24 Javascript
vue+elementUI实现简单日历功能
2020/09/24 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
python3 shelve模块的详解
2017/07/08 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
对python中词典的values值的修改或新增KEY详解
2019/01/20 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
在PyTorch中Tensor的查找和筛选例子
2019/08/18 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
TensorFlow梯度求解tf.gradients实例
2020/02/04 Python
python中wx模块的具体使用方法
2020/05/15 Python
优秀应届生推荐信
2013/11/09 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
2014年教学工作总结
2014/11/13 职场文书
干部年终考核评语
2015/01/04 职场文书
社区党支部公开承诺书
2015/04/29 职场文书
纯CSS实现酷炫的霓虹灯效果
2021/04/13 HTML / CSS
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL
React四级菜单的实现
2022/04/08 Javascript
python可视化分析绘制带趋势线的散点图和边缘直方图
2022/06/25 Python
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python