Vue底层判断标签的性能优化方法
25-04-07 05:17
1028
0
在vue中,如果写div、span等正常的html标签,vue会解析成传统的html标签,但当写不是这些标签的时候,vue会认为他是一个组件,例如:<Custom></Custom>。是如何做到这种判断的呢,首先自己来实现一个这样的判断
const tags = "div,span,img,a".split(","); function checkTag(tag) { return tags.some((item) => item === tag); } console.log(checkTag("Custom")); // false console.log(checkTag("div")); // true console.log(checkTag("a")); // true
这里的实现方案有很多,可以用for、some、forEach等,但是都是离不开循环,思考这样的一个问题,传入一个a,a在字符串最后一个位置,所以会循环4次来判断是否包含a,如果页面上的标签极多,甚至会有上万次的循环
再来查看Vue实现这个的方式,大致源码如下
const tags = "div,span,img,a"; function makeMap(str) { var map = Object.create(null); var list = str.split(","); for (var i = 0; i < list.length; i++) { map[list[i]] = true; } return function (val) { return map[val]; }; } const isHtmlTag = makeMap(tags); isHtmlTag("div"); isHtmlTag("Custom"); isHtmlTag("a");
这里可以看出,实现出一个柯里化函数,并且也是一个闭包状态。此时,在第一次调用时,会循环一次,后续不论在去判断什么标签,都不会再去循环,因为第一次的循环结果利用闭包已经存在了内存里,这就是闭包能带来的性能优化
-
为什么没有空间大,不限速又免费的网盘
某一款网盘给我的免费存储空间就像水库那么大,但下载速度却像这根吸管那么小。另一款网盘给我的下载速度像水吧泄洪那么快,但它的免费存储... 1136 0 24-05-23 -
PS工笔画-溶图背景素材
938 0 25-04-11 -
考研政治重点资料
中国近代史纲要.pdf习新时代中国特色社会主义思想(考研政治).pdf五位一体总体布局(考研政治).pdf徐涛押题重点梳理记忆(上).pdf徐涛押... 1231 0 24-08-20 -
学车预约小程序
随着机动车逐渐走进寻常百姓家中,学车也随之被人们提上了日程,这使得汽车驾驶培训行业得到迅猛发展。移动互联网技术的广泛应用,使手机约车... 861 0 24-10-31 -
2013年万份教师招聘资料试题合集
(9月最新修订版)2011全国各地中考数学试题分类汇编考点35 圆的有关性质1.doc(例卷)福建省中小学教师晋升中级职称模拟题_2.doc(外研版)三... 864 0 24-08-20 -
PHP和MySQL Web开发
本书将介绍如何创建可交互的Web站点,包括从最简单的订单表单到复杂的安全电子商务站点,甚至是交互式的Web 2.0网站。而且,读者还将了解... 765 0 24-05-24 -
12306 Bypass 分流抢票软件
12306 Bypass 分流抢票软件完全免费,支持全自动抢票、自动候补、整点抢购预售票以及稳定捡漏功能。它具有多种实用功能,如多天、多车次... 1437 0 25-02-04 -
能自动帮你过人机验证的工具
会不会有能自动帮我过人机验证的工具呢?你别说,这类工具现在其实还真不少!I'm not robot captcha clicker这个扩展算是最简单易... 919 0 25-04-27
发表我的评论
共0条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~