首页 > 教程
Vue底层判断标签的性能优化方法
- 2025-04-07
- 1379 ℃
在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");这里可以看出,实现出一个柯里化函数,并且也是一个闭包状态。此时,在第一次调用时,会循环一次,后续不论在去判断什么标签,都不会再去循环,因为第一次的循环结果利用闭包已经存在了内存里,这就是闭包能带来的性能优化
相关内容
这些搜索方法可以助你事...
24年强开花呗教程
微信公众号涨粉丝技巧
微信最快的搜索方法 -...
什么是闰秒?这个困扰我5...
php经典趣味算法
人工智能:探索未知领域...
JS压缩图片并保留图片元信息
-
庞氏骗局是什么意思?数字货币是不是庞氏骗局
2024-05-10 1390
-
当我用 DeepSeek 学习、工作和玩,惊艳!含提问攻略、使用实例和心得
2025-04-30 1149
-
怎样在淘宝买东西最便宜
2021-11-22 620
-
PHP判断URL的合法性字符串是否为 URL 链接
2025-04-07 836
-
你真的会使用百度搜索吗?
2021-11-22 642
-
下载B站视频,知道这些方法就够了
2025-03-10 1354
-
3个DeepSeek隐藏玩法,99%的人都不知道
2025-04-30 957
-
去美国必备口语推荐
2025-03-03 1107
-
微信的8个实用功能,隐藏技巧
2024-02-19 852
-
微信开小号辅助注册避免某些软件遇到熟人
2025-06-22 1122
文章评论 (0)
- 这篇文章还没有收到评论,赶紧来抢沙发吧~


进入有缘空间
点击分享文章