Vue底层判断标签的性能优化方法
25-04-07 05:17
1000
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");
这里可以看出,实现出一个柯里化函数,并且也是一个闭包状态。此时,在第一次调用时,会循环一次,后续不论在去判断什么标签,都不会再去循环,因为第一次的循环结果利用闭包已经存在了内存里,这就是闭包能带来的性能优化
-
合成大西瓜H5游戏源码
h5合成大西瓜是一款益智休闲类游戏,源码包含了游戏的所有代码和资源文件,可以用于二次开发或者定制化修改。源码中包括了游戏的各种功能模... 1558 0 24-06-19 -
2025心理学考研复习资料
0心理学考研知识精讲-实验(第一章--第三章).pdf25版-知识精讲--发展心理学.pdf【6月第01篇标注版傅小兰】同步与否:婴儿基本面部表情识别... 789 0 24-08-19 -
9个主流影视站手机仿站源码
九种主流视频APP风格仿站手机影视网站程序,页面精美,基于PHP开发,无需数据库;源码代码简洁清晰,完全免费无后门,简单上传即可使用,自... 413 0 21-06-24 -
PTCms 小说系统自动在线采集,小说聚合网站源码带手机端,多套模板,可以在线听小说,赠送采集规则!5个版本打包
一次性赠送5个版本的PTcms程序源码,整站模板源码/带TXT下载/带听说功能,模板分为PC和wap,内置多个采集规则,小说源码特点功能:1、后台自带了可用的小说采集规则和小说下载规则,配置完成即可自动采集2、模板整合百度语音,实现在线听书。3、模板带有下载采集规则,可实现小说在线下载。 416 0 21-06-19 -
新版普通话水平测试用朗读作品60篇录音(MP3)
普通话朗读范文.doc普通话测试60篇 12号 海滨仲夏夜(流畅)_纯音频文件_纯音频输出.MP3普通话测试60篇 19号 坚守你的高贵(流畅)... 1106 0 24-08-20 -
不一样的四级 大学英语四级救命资料
【2021年6月】四级救命班电子讲义.pdf不一样的【四级课】 阅读讲义( 9 -10).docx不一样的【四级课】 阅读讲义(7).docx不一样的四... 1125 0 24-08-19 -
jquery网页分享插件
350 0 21-06-02 -
Java 语言编码规范(Java Code Conventions)
本文档讲述了 Java 语言的编码规范,较之陈世忠先生《c++编码规范》的浩繁详尽,此文当属 短小精悍了。而其中所列之各项条款,从编码风... 735 0 24-05-28
发表我的评论
共0条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~