全新极速CSS选择器引擎whiz
作者:Fdream 来源:Fdream博客 发布时间:2009-08-30 15:48:00
标签:选择器,css,ajax,JavaScript
好不容易有些空余时间,便拿来写自己的CSS选择器引擎了,这个CSS选择器引擎的目标只有三个:
速度要快
代码要精简
要支持CSS3的选择器。
希望通过这个,能够真正理解那些牛逼的框架中的一部分,比如jQuery,Mootools,YUI等等。花了接近三个星期的时间,大重构了三遍,从最开始的速度极低到现在的极速,每一次都是大换血。在这个过程中,我看到了那些大师写代码的境界,即使我完成了这样一个东西,代码依然很难看。
大家可能看完性能测试才会有兴趣,下图是一个较全的性能测试结果,大家可以在这里测试,大家可以自己跑一跑看(由于加载的东西较多,请耐心等待一会儿再点start按钮)。
代码量目前还没达到我满意的程度,不过已经足够小了,Gzip之后仅仅只有2KB(YUICompressor压缩之后为8.61K(win NTFS)),另外,针对Firefox 3, Opera 9性能还有很大的提升空间,因为我没有使用document.getElementsByClassName。但是这些优化在我看来不再是必要的,因为Firefox的用户应该会很快升级到Firefox 3.5,Opera 10也会很快变成正式版,它们都有本地方法querySelectorAll,所以只要选择器引擎在IE6和IE7下的性能达到最高就可以了,其他的浏览器都有本地方法querySelectorAll了。
在写这个选择器引擎的过程中,更进一步了解了js性能优化的更多方法。
另外,人力有限,此选择器引擎未经过足够完整的案例测试,如果有谁有兴趣帮忙测试者,可以和我联系向我索要源代码,等稳定性达到一定程度后会全面开放源代码。


猜你喜欢
- 本文实例为大家分享了JavaScript实现多层颜色选项卡嵌套的具体代码,供大家参考,具体内容如下这是学JavaScript时候的一个作业,
- Session 对象 可以使用 Session 对象存储特定用户会话所需的信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Se
- 文 | 某某白米饭来源:Python 技术「ID: pythonall」微信和 QQ 都有一个存放缓存文件的文件夹,微信在设置 -
- 如下所示:beta分布的最大特点是其多样性, 从下图可以看出, beta分布具有各种形态, 有U形, 类似正态分布的形状, 类似unifor
- 在读取文件时将整数变量读成了字符串, 或者需要转换列属性时,通过方法astypePython中举例:dataframe.numbers=da
- 为了能够在Visual Studio 中集成Mysql, 首先需要安装MySql的连接工具 与 MySql的VisualStudio插件。M
- PyMongo是什么PyMongo是驱动程序,使python程序能够使用Mongodb数据库,使用python编写而成.安装环境
- 下载地址下载地址: https://dev.mysql.com/downloads/mysql/解压安装将下载好的zip压缩包解压到你的安装
- Python input()函数Python input()函数教程在 Python 中,input() 函数用于获取用于的输入,并给出提示
- YUI Compressor 压缩 JavaScript 的内容包括:移除注释移除额外的空格细微优化标识符替换(Identifier Rep
- 函数的递归调用:是函数嵌套调用的一种特殊形式具体是指:在调用一个函数的过程中又直接或间接地调用到了本身# 直接调用本身def func():
- SQL Server 2008我们也能从中体验到很多新的特性,但是对于SQL Server 2008安装,还是用图来说话比较好。本文将从SQ
- 字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,
- ①捕捉一个异常捕捉一个异常以用0作为除数会得到ZeroDivisionError异常为例,print(1/0)为例程序的持续执行,不因该异常
- ORM模型:ORM模型对于后端开发来说肯定是不陌生的,包括很多后端框架比如django,现在都自带这个模型了ORM(Object Relat
- 本文我们来做一个简单的随机漫步数据图,进一步了解matplotlib的使用,使用Python生成随机漫步数据,再使用matplotlib绘制
- 根据我们指定的条件检索函数中的元素import matplotlib.pyplot as pltimport numpy as npa =
- adonet基础示例分享using System;using System.Collections.Generic;using System
- AJAX应用因为它们的表现力的丰富、更加互动和更加迅速的响应得到了赞扬声;这些优点都是通过使用XMLHttpRequest对象来动态的载入数
- 1 引言形态学运算是针对二值图像依据数学形态学集合论方法发展起来的图像处理的方法.其主要内容是设计一整套的变换概念和算法,用以描述图像的基本