准备写一个世界第一快的js的css3 selector engine
2008-10-31 00:18
543 查看
我在看sizzle和peppy的源代码,发现他们的速度还有提升的空间,
我准备使用jit技术实现一个世界最快的javascript css3 selector engine.
css3选择器也有一些不方便
比如说伪类选择器,只运行"且"选择,不运行"或"选择,要"或"的话,把前面的抄下来吧,效率低多了.
经过jit编译过后的selector成为一个函数,接受一个参数ct,表示容器.选择器将从这个容器开始选择.
该函数执行时,直接引用一些编译期间确定的变量,而且避免函数调用(相当于c++内联函数),合并相邻的伪类选择器.
query函数接受参数ql,ct,rs
ql:查询语句
ct:查询容器
rs:查询结果
query函数首先根据ql和ct查询缓存,如果以前用同样的语句和容器查询过并且文档未改变,则有缓存可以直接返回.
将结果合并到rs返回.
如果不存在缓存则查询是否存在ql编译好的selector的缓存,如果以前编译过一次,那么就不用再编译了,直接用缓存里编译好的.
我准备使用jit技术实现一个世界最快的javascript css3 selector engine.
css3选择器也有一些不方便
比如说伪类选择器,只运行"且"选择,不运行"或"选择,要"或"的话,把前面的抄下来吧,效率低多了.
经过jit编译过后的selector成为一个函数,接受一个参数ct,表示容器.选择器将从这个容器开始选择.
该函数执行时,直接引用一些编译期间确定的变量,而且避免函数调用(相当于c++内联函数),合并相邻的伪类选择器.
query函数接受参数ql,ct,rs
ql:查询语句
ct:查询容器
rs:查询结果
query函数首先根据ql和ct查询缓存,如果以前用同样的语句和容器查询过并且文档未改变,则有缓存可以直接返回.
将结果合并到rs返回.
如果不存在缓存则查询是否存在ql编译好的selector的缓存,如果以前编译过一次,那么就不用再编译了,直接用缓存里编译好的.
相关文章推荐
- css3加js做一个简单的3D行星运转效果
- 最近兰州的js风格写个插件和一个template engine
- CSS3:实现一个循序渐进的下划线和一个Material Button【No JS】
- JavaScript templating engine(一个好的JS模板引擎)
- css3clock.js - 一个用CSS3与纯js实现的简单时钟
- 如何将一个免费的项目做成世界第一?
- 分享一个通过JS、CSS3滚动渐变的效果
- JS判断浏览器是否支持某一个CSS3属性
- 一个JS的RPG引擎,备忘,准备写个html5的动作游戏
- CSS3:实现一个循序渐进的下划线和一个Material Button【No JS】
- 一个学习html5 css3还有js的网站
- 一个 div 手写红绿灯- 分别用 css3 和 js 实现
- 使用Node.js开发一个在线聊天应用——准备工作
- JS判断浏览器是否支持某一个CSS3属性的方法
- 一个外国网站严肃地统计后发现,中国程序员整体实力世界第一
- JS判断浏览器是否支持某一个CSS3属性的方法
- 一个用 CSS3 样式加上 JS 实现了 alert 和 confirm的效果
- 看着使用three.js制作的网站效果自己用css3写了一个小demo
- 【css3】js条件下多次触发同一个css3动画的解决方案
- ndoe.js实战之开发微博第一讲之工具准备