详谈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中“+=”的应用
Feb 02 Javascript
JavaScript Event学习第四章 传统的事件注册模型
Feb 07 Javascript
javascript返回顶部效果(自写代码)
Jan 06 Javascript
THREE.JS入门教程(5)你应当知道的十件事
Jan 24 Javascript
jquery 缓存问题的几个解决方法
Nov 11 Javascript
jQuery+css3实现Ajax点击后动态删除功能的方法
Aug 10 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
Dec 10 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
Mar 04 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
Feb 08 Javascript
Vue中用props给data赋初始值遇到的问题解决
Nov 27 Javascript
VUE 解决mode为history页面为空白的问题
Nov 01 Javascript
vue和小程序项目中使用iconfont的方法
May 19 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
资料注册后发信小技巧
2006/10/09 PHP
PHP的FTP学习(一)
2006/10/09 PHP
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
PHP之预定义接口详解
2015/07/29 PHP
JavaScript Cookie 直接浏览网站分网址
2009/12/08 Javascript
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
js闭包实例汇总
2014/11/09 Javascript
javaScript中slice函数用法实例分析
2015/06/08 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
React实现点击删除列表中对应项
2017/01/10 Javascript
详解javascript立即执行函数表达式IIFE
2017/02/13 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
vue-cli构建项目下使用微信分享功能
2018/05/28 Javascript
node.js使用免费的阿里云ip查询获取ip所在地【推荐】
2018/09/03 Javascript
微信小程序云开发之使用云存储
2019/05/17 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
Python用Pillow(PIL)进行简单的图像操作方法
2017/07/07 Python
python实现rsa加密实例详解
2017/07/19 Python
利用Python半自动化生成Nessus报告的方法
2019/03/19 Python
浅谈Python_Openpyxl使用(最全总结)
2019/09/05 Python
Django choices下拉列表绑定实例
2020/03/13 Python
python与idea的集成的实现
2020/11/20 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
神路信息Java面试题目
2013/03/31 面试题
酒店公关部经理岗位职责
2013/11/24 职场文书
新闻学专业个人求职信写作
2014/02/04 职场文书
妇女干部培训方案
2014/05/12 职场文书
银行求职自荐书
2014/06/25 职场文书
医院党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
医院合作意向书范本
2015/05/08 职场文书
解析MySQL索引的作用
2022/03/03 MySQL