kquery實作了css3中除僞元素(pseudo-element)外的其他選擇器。由于采用的編譯緩存,在速度上(通常指不支援QSA的浏覽器, 或者禁用掉qsa)明顯超越其他選擇器引擎。
在結果的準确性上也高于其他引擎(編譯器系統隻會緩存查詢語句而不緩存查詢結果, 号稱速度最快的peppy則緩存了查詢結果)。在支援的選擇器種類上也多于其他引擎(這裡不得不踢下nwmatcher, 在我所了解的引擎中它是除kquery之外在速度、支援的種類、準确性上都非常棒的引擎)。
kquery有什麼特點? 其實上面的介紹已經在三個主要的方面展現出了。
1. 和nwmatcher一樣是目前支援的selectors種類最多的
2. 速度上領先于其他引擎(編譯系統找出最快的查詢語句并緩存), 尤其是在僞類上(其他常用id class tag選擇器各個引擎之間的其實差距不是太大)
3. 準确性上優勢(理論上,由于不緩存查詢結果即使dom在高速的變化,也能保持查詢結果的準确)
4. 相容ie+/chrome/firefox/safari/opera等浏覽器(沒有在各大浏覽器的各個版本都進行過測試,歡迎回報)
5. 支援擴充自定義僞類
項目位址: https://github.com/yessky/kquery
速度測試: http://test.veryos.com/selector/slickspeed/index.html
速度測試環境:沒有禁用querySelectorAll,沒有禁用各個引擎的緩存結果
Testsuite: http://test.veryos.com/selector/testsuite.html
如發現任何bug,歡迎回報至[email protected]或者在github上create ticket
最後,我覺得有必要回答一下"為什麼重複造輪子"這個問題。
這裡借用某位網友的回答。首先,不斷的研究及重複造輪子有利于個人的提高,具體能提高什麼,答案顯而易見。
其次,正是因為不斷地有新論子的造出,使得某一些被視為權威或者處于瓶頸的技術被推翻,重新設計,不斷得以提高。