在vue中,如果写div、span等正常的html标签,vue会解析成传统的html标签,但当写不是这些标签的时候,vue会认为他是一个组件,例如:。是如何做到这种判断的呢,首先自己来实现一个这样的判断

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')

这里可以看出,实现出一个柯里化函数,并且也是一个闭包状态。此时,在第一次调用时,会循环一次,后续不论在去判断什么标签,都不会再去循环,因为第一次的循环结果利用闭包已经存在了内存里,这就是闭包能带来的性能优化。

Vue底层判断标签的性能优化方法相关推荐

  1. 大主子表关联的性能优化方法

    [摘要] 主子表是数据库最常见的关联关系之一,最典型的包括合同和合同条款.订单和订单明细.保险保单和保单明细.银行账户和账户流水.电商用户和订单.电信账户和计费清单或流量详单.当主子表的数据量较大时, ...

  2. HBase性能优化方法总结(四):数据计算

    本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,可参考:淘宝Ken Wu同学的博客. 下面是本文总结的第四部分内容:数据计算相关的优化方法 ...

  3. ​vSphere 性能优化方法总结

    ​vSphere 性能优化方法总结 https://mp.weixin.qq.com/s?__biz=MjM5NTk0MTM1Mw==&mid=2650635292&idx=1& ...

  4. 性能计数器驱动_Linux CPU性能优化方法

    在Linux系统中,由于成本的限制,往往会存在资源上的不足,例如 CPU.内存.网络.IO 性能.本文,就对 Linux 进程和 CPU 的原理进行分析,总结出 CPU 性能优化的方法. 1. 分析手 ...

  5. CPU CACHE优化 性能优化方法和技巧

    转载来源:性能优化方法和技巧 系列目录 性能优化方法和技巧 性能优化的方法和技巧:概述 性能优化的方法和技巧:代码 性能优化的方法和技巧:工具 这是一个可以用一本书来讲的话题,用一系列博客来讲,可能会 ...

  6. vSphere 性能优化方法 故障排错方法及工具总结(一)

    转自@twt社区 本资料主要包括:性能优化方法:vSphere 性能优化逻辑.针对 VM 的性能优化.针对 CPU 的性能优化.针对 RAM 的性能优化.针对 DISK 的性能优化.针对 Networ ...

  7. HBase性能优化方法总结(4):读表操作

    来自:http://www.cnblogs.com/panfeng412/archive/2012/03/08/hbase-performance-tuning-section3.html 本文主要是 ...

  8. HBase性能优化方法总结(3):写表操作

    本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,可参考:淘宝Ken Wu同学的博客. 下面是本文总结的第二部分内容:写表操作相关的优化方法 ...

  9. HBase性能优化方法总结(2):表的设计

    本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,可参考:淘宝Ken Wu同学的博客. 下面是本文总结的第一部分内容:表的设计相关的优化方法 ...

最新文章

  1. 2014-04-03研究笔记整理
  2. Java使用AES加密解密
  3. 抽象工厂模式_设计模式系列—抽象工厂模式
  4. Java and Jakarta - Hybris
  5. latex 小于_数学公式怎么快速输入?Latex语法了解一下
  6. JVM--心得 堆栈区域和GC的设置
  7. IDEA :Warning:java: 源值1.5已过时, 将在未来所有发行版中删除
  8. docker compose dns 缓存_Docker深入浅出 | Docker Compose多容器实战
  9. 【渝粤教育】国家开放大学2018年春季 0195-22T机械设计基础 参考试题
  10. ectouch添加手机注册框
  11. GD32F103替换STM32F103
  12. 一级倒立摆MATLAB仿真程序(搬运)
  13. 5种方法,加密你的Python代码 !
  14. js pug 代码_Pug模板(一)
  15. 局域网联机_七日杀v17.2(B27)版/支持局域网联机/多项修改器/初始存档/局域网联机教程...
  16. 入侵防御系统特征库升级
  17. [心情]享受堕落的乐趣
  18. iphone更新运营商服务器,iphone更新运营商配置文件操作方法
  19. Java求时间差(日期差)
  20. Google公布软件网络负载均衡器Maglev

热门文章

  1. AJAX编写用户注册实例及技术小结
  2. 华为机试HJ103:Redraiment的走法
  3. OpenCV-数组加权和cv::addWeighted
  4. 函数c语言表示_C语言定义无参数的函数时,f()和f(void)有什么区别?
  5. java通过异常传递消息_如何消除'Failed to load IMAP envelope'消息传递异常?
  6. python 3.8.0安卓_Python 3.8.0 正式版发布,新特性初体验
  7. pythonfor循环加2_python – 在For循环中添加List(我最初将List设置为什么?)
  8. 【编程题】判断一个整数对应的二进制数是否是回文
  9. php版本kms,通过 AWS KMS API 和 AWS SDK for PHP 版本 3 使用密钥 - 适用于 PHP 的 AWS 开发工具包...
  10. python开发内部管理系统_GitHub - JEmbrace/ZYPCManageSystem: 工作室的]内部管理平台