详谈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 极速 隐藏/显示万行表格列只需 60毫秒
Mar 28 Javascript
img onload事件绑定各浏览器均可执行
Dec 19 Javascript
JavaScript 垃圾回收机制分析
Oct 10 Javascript
node.js中的fs.realpath方法使用说明
Dec 16 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
Mar 17 Javascript
javascript创建含数字字母的随机字符串方法总结
Aug 01 Javascript
vue实现密码显示隐藏切换功能
Feb 23 Javascript
p5.js入门教程之平滑过渡(Easing)
Mar 16 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
Jun 07 Javascript
vue与原生app的对接交互的方法(混合开发)
Nov 28 Javascript
javascrpt密码强度校验函数详解
Mar 18 Javascript
如何vue使用el-table遍历循环表头和表体数据
Apr 26 Vue.js
解决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
第四节--构造函数和析构函数
2006/11/16 PHP
使用PHP导出Word文档的原理和实例
2013/10/21 PHP
ThinkPHP内置jsonRPC的缺陷分析
2014/12/18 PHP
Laravel 5 框架入门(一)
2015/04/09 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
找出字符串中出现次数最多的字母和出现次数精简版
2012/11/07 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
2013/09/02 Javascript
js用正则表达式来验证表单(比较齐全的资源)
2013/11/17 Javascript
jQuery右下角旋转环状菜单特效代码
2015/08/10 Javascript
jquery动画效果学习笔记(8种效果)
2015/11/13 Javascript
Javascript实现汉字和拼音互转的终极方案
2016/10/19 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
vue2.0 better-scroll 实现移动端滑动的示例代码
2018/01/25 Javascript
JS中Map和ForEach的区别
2018/02/05 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
2019/03/13 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
python实现自动重启本程序的方法
2015/07/09 Python
python2.7读取文件夹下所有文件名称及内容的方法
2018/02/24 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
2019/06/18 Python
Python爬虫程序架构和运行流程原理解析
2020/03/09 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
Python过滤序列元素的方法
2020/07/31 Python
如何从csv文件构建Tensorflow的数据集
2020/09/21 Python
python使用matplotlib:subplot绘制多个子图的示例
2020/09/24 Python
解释一下Windows的消息机制
2014/01/30 面试题
广告业务员岗位职责
2014/02/06 职场文书
金融管理应届生求职信
2014/02/20 职场文书
党员承诺书格式
2014/05/21 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书
台积电称即便经济低迷也没有降价的计划
2022/04/21 数码科技