首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

「理论」jQuery选择器Sizzle原理分析(上)

| 导语 曾经红级一时的jQuery还记得吗?拥有号称当时业界最快的DOM选择器Sizzle,那么为什么他能自称是最快呢?让我们来分析一下Sizzle.js的源码,了解他的设计精妙之处。...虽然现在Vue,React等MVVM框架的热度如日中天,但是了解下jQuery的DOM选择器设计思路,可以学习到Sizzle设计的精妙之处,为自己模块设计和框架设计提供很好的参考意义,也为了解MVVM框架虚拟...二、Sizzle的特别之处 首先介绍下jQuery选择器模块,就是Sizzle选择器,他的网址是http://sizzlejs.com/,如果你只需要进行文档节点的查询,可以直接引入Sizzle的文件就可以了...Sizzle选择器有哪些特点呢? 1. 高效,Sizzle通过很多方法来实现了极致的访问速度,为我们搜索DOM节点提供了一个很好的指导,号称是当时最快的DOM选择器引擎。 2....答案是从右向左,即使是浏览器渲染CSS也通常是这个规则,为啥呢?

1.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    jQuery源码研究:选择器

    jQuery的css选择器,是一大亮点,其实现源码也可单独拎出来作为模块使用。 先看个整体,在jQuery源码中在行229-2752区域。...var Sizzle = (function(window){ // 具体实现暂略... })(window) css选择器的具体实现是一个匿名自执行函数,传入参数为window对象。...函数顶部定义若干变量,包括本地文档变量、特定实例数据和特定实例方法,此外还定义了一些为选择器字符串服务的正则表达式。数量太多就不一一列举了,感兴趣的可以自己去看源码吧。...方法的主体从行715开始直到结束,定义了Sizzle构造函数,若干工具方法和Sizeele静态方法及属性,概览看下图,由于内容太多,只截部分: ?...return select( selector.replace( rtrim, "$1" ), context, results, seed ); } Sizzle函数是整个css选择器的入口函数

    59720

    【第3期】前端常用插件、工具类库汇总

    /slick/ jQuery旋转木马插件slick jQuery slider:http://www.jq22.com/jquery-info889 插件描述:最全最简单最通用的 幻灯片轮播 ,可控制的插件...模版引擎 doT:https://github.com/olado/doT doT模板方便快捷的组织页面DOM,特点是快,小,无依赖其他插件。这也是我在项目中经常会使用的一个模版引擎。...Jade Language:http://jade-lang.com/ Node模版引擎,是Express框架内置的模版引擎。中文版的教程可以看这篇Jade模板。...颜色选择器 Bootstrap Colorpicker:https://farbelous.io/bootstrap-colorpicker/index.html Bootstrap 4 中使用的颜色选择器...spectrum:http://bgrins.github.io/spectrum/ 支持移动端的,超小的颜色选择器。不用大量的图片、也不需要其他插件,同时支持自定义。

    4.4K10

    前端知识体系整理(不断更新)

    类型、可执行文件) (服务器端)严格的路径限制,比如杜绝路径跳转 css css盒子模型 css的继承规则 IE低版本的hacks 浏览器的怪异模式与标准模式 性能优化(最佳实践) HTML优化 语意化...1】高性能CSS) 合并图片(css sprites) 尽量避免通配符选择器:CSS选择器是从右到左进行规则匹配,基于这个机制,浏览器会查找所有同类节点然后逐级往上查找,知道根节点,这样效率很低 尽量避免属性选择器...的浏览器很慢 尽可能优先使用符合CSS语法规范的CSS选择器表达式,以此来避免使用jQuery自定义的选择器表达式,因为当jQuery遇到单个id, 标签名,类名,选择器就会快速调用浏览器支持的DOM方法查询...jQuery 自带的 Sizzle 选择器引擎,而是使用原生API查找元素 $('#parent').find('.child'); // 最快 $('.child', $('#parent'));...// 较快,内部会转换成第一条语句的形式,性能有一定损耗 $('#parent .child'); // 不如上一个语句块 使用组合选择器时,尽可能让右端更明确,因为Sizzle引擎是从右到左进行匹配的

    1.6K20

    jQuery架构设计与实现(2.1.4版本)

    模块化管理的设计 7.3.3预加载与懒加载的共存 第八章:选择器引擎 8.1 CSS选择器 8.1.1 认识CSS选择器 8.1.2 选择器的种类 8.2 浏览器提供的接口与兼容问题 8.2.1...理解正则 8.4.2 选择分组与引用 8.4.3 分析jQuery中的正则 8.4 jQuery选择器的概况 8.5 选择器引擎设计的思路与知识点 8.5.1 浏览器的从右向左的解析...8.5.2 设计的思路 8.5.3 需要处理的一些问题 8.5.4 抽象出的概念 8.6 详解sizzle引擎 8.6.1 词法解析器 8.6.2 解析原理 8.6.3 编译函数...的样式钩子 11.8 jQuery的css接口 11.8.1 addClass与hasClass 11.8.2 removeClass与.toggleClass 11.9 jQuery...类型转化器 14.14 小结 第十五章:动画引擎 15.1 常见动画手段 15.1.1 定时器动画 15.1.2 CSS3动画 15.1.3 transition动画 15.2

    1.1K51

    编写高效的CSS选择器

    CSS规范并没有明确浏览器如何去实现样式系统,仅仅是说明了它们必须这样做。...有鉴于此,不同的样式系统引擎可能会拥有完全不同的表现和行为,特别是 Gecko 与 WebKit, 这两个引擎都是开源项目,实现了类似的算法,具有极其相近的优缺点。...选择器的最后面的部分即为关键选择器(即用来匹配目标元素的那部分,而不是该元素的祖先元素)。...只有当标签规则的标签匹配时该规则才被检查。通用规则始终都会检查。 高效 CSS 指南 避免通用规则 请确保规则不以通用类型选择器作为结束!...使用局部样式表 如非必要则避免特定浏览器的渲染特征 本文内容主要来自MDN中的CSS开发指南

    67540

    jQuery最佳实践

    用对选择器 在jQuery中,你可以用多种选择器,选择同一个网页元素。每种选择器的性能是不一样的,你应该了解它们的性能差异。...(1)最快的选择器:id选择器和元素标签选择器 举例来说,下面的语句性能最佳: $('#id') $('form') $('input') 遇到这些选择器的时候,jQuery内部会自动调用浏览器的原生方法...(2)较慢的选择器:class选择器 $('.className')的性能,取决于不同的浏览器。...它比最快的形式大约慢50%。 (4) $('#parent > .child') jQuery内部使用Sizzle引擎,处理各种选择器。...Sizzle引擎的选择顺序是从右到左,所以这条语句是先选.child,然后再一个个过滤出父元素#parent,这导致它比最快的形式大约慢70%。

    1.3K20

    前端工作面试经典问题(超级全)

    请解释 CSS 动画和 JavaScript 动画的优缺点。 什么使 CORS,以及其要解决的问题? HTML 相关问题: doctype(文档类型) 的作用是什么?...你熟悉 SVG 样式的书写吗? 如何优化网页的打印样式? 在书写高效 CSS 时会有哪些问题需要考虑? 使用 CSS 预处理器的优缺点有哪些? 请描述你曾经使用过的 CSS 预处理器的优缺点。...如果设计中使用了非标准的字体,你该如何去实现? 请解释浏览器是如何判断元素是否匹配某个 CSS 选择器? 请描述伪元素 (pseudo-elements) 及其用途。...请解释 JavaScript 中 this 是如何工作的。 请解释原型继承 (prototypal inheritance) 的原理。 你怎么看 AMD vs. CommonJS?...请解释什么是单页应用 (single page app), 以及如何使其对搜索引擎友好 (SEO-friendly)。

    1.1K80

    jquery要怎么写才能速度最快?(转…

    (1)最快的选择器:id选择器和元素标签选择器 举例来说,下面的语句性能最佳:   $('#id')   $('form')   $('input') 遇到这些选择器的时候,jQuery内部会自动调用浏览器的原生方法...(2)较慢的选择器:class选择器 $('.className')的性能,取决于不同的浏览器。...但是,IE5-IE8都没有部署这个方法,所以这个选择器在IE中会相当慢。 (3)最慢的选择器:伪类选择器和属性选择器 先来看例子。...它比最快的形式大约慢50%。 (4)$('#parent > .child') jQuery内部使用Sizzle引擎,处理各种选择器。...Sizzle引擎的选择顺序是从右到左,所以这条语句是先选.child,然后再一个个过滤出父元素#parent,这导致它比最快的形式大约慢70%。

    1.6K30

    IDEA永久激活码 激活教程 亲测有效(2022年最新IDEA激活码)

    作者的一段话让不禁让大家感叹一个时代的落幕,其实就是jQuery时代的落幕,已经不远了。...在接下来的一年里,jQuery Mobile 团队继续兼容更多的平台和浏览器、新的组件和主题,并最终推出了一个 themeroller 工具,允许开发人员在不编写任何 CSS 的情况下配置和下载主题。...jQuery的核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。...随之而来的是jQuery的快速发展。2006年1月John Resig等人创建了jQuery;8月,jQuery的第一个稳定版本,并且已经支持CSS选择符、事件处理和AJAX交互。...在构造jQuery对象模块中,如果在调用构造函数jQuery()创建jQuery对象时传入了选择器表达式,则会调用选择器Sizzle(一款纯JavaScript实现的CSS选择器引擎,用于查找与选择器表达式匹配的元素集合

    2.2K10

    CSS Modules与Styled Components:提升CSS可维护性

    CSS ModulesCSS Modules 是一种CSS模块化方案,它通过本地作用域来限制CSS选择器的范围,避免全局样式冲突。每个CSS文件都生成一个唯一的类名,确保了类名的唯一性。...这种方式提供了组件级别的样式,避免了CSS选择器的编写,支持动态样式和变量。...这种混合使用的方式可以根据项目需求灵活调整,同时利用两者的优点。CSS Modules vs....Styled Components:优缺点CSS Modules 的优点:防止全局样式冲突:本地化类名避免了命名冲突。易于理解:对于熟悉CSS的开发者来说,学习曲线较低。...CSS能力:支持CSS属性和选择器,以及CSS变量、媒体查询等。易于组合:可以创建可复用的样式组件。

    10400

    jQuery最佳实践

    用对选择器 在jQuery中,你可以用多种选择器,选择同一个网页元素。每种选择器的性能是不一样的,你应该了解它们的性能差异。...(1)最快的选择器:id选择器和元素标签选择器 举例来说,下面的语句性能最佳:   $('#id')   $('form')   $('input') 遇到这些选择器的时候,jQuery内部会自动调用浏览器的原生方法...(2)较慢的选择器:class选择器 $('.className')的性能,取决于不同的浏览器。...它比最快的形式大约慢50%。 (4) $('#parent > .child') jQuery内部使用Sizzle引擎,处理各种选择器。...Sizzle引擎的选择顺序是从右到左,所以这条语句是先选.child,然后再一个个过滤出父元素#parent,这导致它比最快的形式大约慢70%。

    1.7K60

    jQuery最佳实践

    用对选择器 在jQuery中,你可以用多种选择器,选择同一个网页元素。每种选择器的性能是不一样的,你应该了解它们的性能差异。...(1)最快的选择器:id选择器和元素标签选择器 举例来说,下面的语句性能最佳:   $(‘#id’)   $(‘form’)   $(‘input’) 遇到这些选择器的时候,jQuery内部会自动调用浏览器的原生方法...(2)较慢的选择器:class选择器 $(‘.className’)的性能,取决于不同的浏览器。...它比最快的形式大约慢50%。 (4) $(‘#parent > .child’) jQuery内部使用Sizzle引擎,处理各种选择器。...Sizzle引擎的选择顺序是从右到左,所以这条语句是先选.child,然后再一个个过滤出父元素#parent,这导致它比最快的形式大约慢70%。

    85330

    据说看了这篇文章的小伙伴,都找到前端工作了,不信试试看

    * 请解释 CSS 动画和 JavaScript 动画的优缺点。 * 什么是跨域资源共享 (CORS)?它用于解决什么问题?...* 使用 CSS 预处理器的优缺点有哪些? * 请描述你曾经使用过的 CSS 预处理器的优缺点。 * 如果设计中使用了非标准的字体,你该如何去实现?...* 请解释浏览器是如何判断元素是否匹配某个 CSS 选择器? * 请描述伪元素 (pseudo-elements) 及其用途。...* 请解释 JavaScript 中 `this` 是如何工作的。 * 请解释原型继承 (prototypal inheritance) 的原理。 * 你怎么看 AMD vs. CommonJS?...* 请解释什么是单页应用 (single page app), 以及如何使其对搜索引擎友好 (SEO-friendly)。 * 你使用过 Promises 及其 polyfills 吗?

    1K70

    css基础,css选择器

    内联式 书写位置:在 head标签内定义一个stype标签内 CSS语法:css选择器{样式1;样式2} 优缺点:可读性强,有复用性,样式被html页面绑定了,不能提供给其它html页面使用 2...." href="CSS文件路径"> 优缺点: 可读性强,有复用性,适合团队开发(文件级别的复用性) 3....行间式 书写位置:在标签的style属性中书写样式 CSS语法: 优缺点:可读性差,没有复用性,书写直接 4....三种方式的优先级别 内联与外联之间没有优先级区别,由于html属于解释性语言,书写在下方的会覆盖上方的样式 行间式的优先级要高于一切 三.CSS选择器 统配选择器 * { 样式1; } 的样式--> ID选择器 #ID名称{ 样式1; } 的样式--> 高级选择器(简单讲解) 标签名.类名{ 样式1; } <!

    1.3K30

    前端技术观察第六期 - Chrome 77里有什么新东西给开发者?

    https://frontendfoc.us/link/77123/web 用CSS变量实现逻辑运算(英) 在CSS中怎样在calc()函数中用数学运算符模拟类似not(var(--i))这样的函数。...https://zhuanlan.zhihu.com/p/34191831 JS引擎V8如何与Lite模式两开花 构建 V8 Lite 的过程中将一些关键的优化部分带到现有 V8 上的过程,以及在实际工作负载中对...https://mp.weixin.qq.com/s/4sSal6MclpVY99ixlG6B8w tools And codes akiran /react-slick React幻灯片组件。...https://github.com/akiran/react-slick immerjs /immer 通过改变当前的状态来创建下一个不可变状态。...https://github.com/karma-runner/karma 我开发了一个SwiftUI库,将CSS引入iOS开发 在APP开发中,快速实现效果至关重要,而样式的可复用、易维护可以帮助开发人员做到这一点

    87930
    领券