一个人去完成一件事情,如果派多个人去做的话,只要配合默契,效率比一个人做肯定要高,效率提高,所需的时间就减少了。如果只能一个人完成,那么必须设法提高自己的劳动效率,这个提高可以是量的改变也可以是质的改变。我把这个量的改变称为空间上的改变,也就是说空间和时间是可以相互转换的。
综合之前我们分析的:
按照解析原理,词法分析,过滤器原理处理之后得到的种子合集通过一次用循环递归去匹配查找,这样的效率是很慢的。
那么sizzle从给1.8开始就引入了编译的概念:
sizzle引入这个编译函数主要的作用是为分词的筛选,提高逐个匹配的效率,实现闭包缓存
闭包是js的特性,我们经常会用来作为私有变量的保存处理,那么sizzle就很好的利用了这一特性,把选择器中每一个选择原子都变成了函数的处理方法,然后通过闭包保存着。再缓存在内存中去,这样有重复使用的时候就会首先调用缓存。
Sizzle对于编译这个最终的过滤器闭包是非常绕的,先通过简单的例子去展示这一个复杂的思路。
具体见右边代码所示:
抛开伪类的处理,这里就是一个简化版的sizzle的流程。
请验证,完成请求
由于请求次数过多,请先验证,完成再次请求
打开微信扫码自动绑定
绑定后可得到
使用 Ctrl+D 可将课程添加到书签
举报
目前暂无任何问答
实战
实战
实战
实战
实战