详谈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 相关文章推荐
跟我一起学写jQuery插件开发方法(附完整实例及下载)
Apr 01 Javascript
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
Sep 12 Javascript
node.js中watch机制详解
Nov 17 Javascript
jQuery使用animate创建动画用法实例
Aug 07 Javascript
详解Bootstrap按钮
Jan 04 Javascript
js采用concat和sort将N个数组拼接起来的方法
Jan 21 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
Jul 07 Javascript
js实现网页定位导航功能
Mar 07 Javascript
详解js几个绕不开的事件兼容写法
Aug 30 Javascript
浅谈JavaScript作用域和闭包
Sep 18 Javascript
简单说说angular.json文件的使用
Oct 29 Javascript
layer弹出层自定义提交取消按钮的例子
Sep 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
yii框架源码分析之创建controller代码
2011/06/28 PHP
js停止输出代码
2008/07/20 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
ajax请求get与post的区别总结
2013/11/04 Javascript
js中数组排序sort方法的原理分析
2014/11/20 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
2015/12/13 Javascript
JavaScript操作select元素和option的实例代码
2016/01/29 Javascript
jquery UI Datepicker时间控件的使用及问题解决
2016/04/28 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
如何正确理解javascript的模块化
2017/03/02 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
2020/05/09 Javascript
jQuery插件实现图片轮播效果
2020/10/19 jQuery
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
Python json模块使用实例
2015/04/11 Python
python中requests和https使用简单示例
2018/01/18 Python
Python学习_几种存取xls/xlsx文件的方法总结
2018/05/03 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
领先的英国注册在线药房 :Simply Meds Online
2019/03/28 全球购物
个性大学生自我评价
2013/12/04 职场文书
《小草和大树》教学反思
2014/02/16 职场文书
法律进企业活动方案
2014/03/04 职场文书
勤俭节约倡议书
2014/04/14 职场文书
史上最牛辞职信
2015/05/13 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
反腐倡廉学习心得体会范文
2015/08/15 职场文书