Vue底层判断标签的性能优化方法
25-04-07 05:17
1123
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");
这里可以看出,实现出一个柯里化函数,并且也是一个闭包状态。此时,在第一次调用时,会循环一次,后续不论在去判断什么标签,都不会再去循环,因为第一次的循环结果利用闭包已经存在了内存里,这就是闭包能带来的性能优化
-
二十四节气小程序
二十四节气小程序的核心功能可能包括以下几点:1. **节气展示**:展示每个节气的日期、含义、起源、民俗等信息,帮助用户了解中国的传统节... 1619 0 24-10-16 -
2012音乐专业教师招聘试题
【豆丁★教育百科】(无答案第二版)信息技术教师招聘考核试题含答案.docx【豆丁★教育百科】07教育局教师招聘试卷.doc【豆丁★教育百科】09... 923 0 24-08-20 -
选择并使用Redi的核心数据类型
首先,来看一下 Redis 的核心数据类型。Redis 有 8 种核心数据类型,分别是 :string 字符串类型;list 列表类型;set 集合类型;... 1230 0 24-05-24 -
一站式学习C编程
本书有两条线索,一条线索是以Linux平台为载体全面深入地介绍C语言的语法和程序的工作原理,另一条线索是介绍程序设计的基本思想和开发调试... 1208 0 24-05-24 -
微擎模块你画我猜小程序源码
你猜我画是一款在线画图小程序,每个用户可以展现自己的画图天斌,闲暇时间进入小苟程序,将画好的作品分享给朋友,天生自带传播属性,非常... 1038 0 24-06-19 -
音乐播放器带后端
根据微信音乐播放器小程序的功能需求,进行系统设计。前台功能:用户进入小程序可以对首页,音乐信息,音乐专辑,音乐论坛,我的等功能进行... 1172 0 24-09-17 -
魔法抢购助手_Ver_6_2_全能抢购_多平台自动抢购_会员解锁版_
魔法抢购助手app是一款专业给力的免费抢东西软件,魔法抢购助手app拥有强大的定时秒抢功能,通过魔法抢购助手软件抢秒杀产品更放心。是一款... 2081 0 24-06-01 -
sketchup 模型合集skp
771 0 24-03-02
发表我的评论
共0条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~