로그인

이메일
비밀번호
왼쪽에 걸리적 거리는 거 숨기기

http://hooriza.com/svn/javascript/chunks/cssQuery/

지난 달 개인수양 계획
에 있었던 내용이라서 계속 만들고 있었는데...

목표로 했던 YUI 의 Ext.DomQuery 보다 속도가 턱없이 느려서 갈아엎고 갈아엎고...
4~5번을 그렇게 처음부터 새로 짜기를 반복하다가 드디어 노드 탐색을 양쪽 방향으로 하는 방법을 사용해서 일반적인 쿼리는 Ext.DomQuery 보다 약간 느리게, 어떤거는 조금 빠르게, 그리고 ID 로 찾는 # 가 쿼리의 중간에 있으면 기대이상으로 훨씬 더 빠른 속도를 보여주도록 완성!

Pseudo Class 는 아직 몇가지 간단한 것만 지원하는 상태...
그리고 HTMLDocument 를 탐색할때는 태그의 대소문자를 구별 하지 않고 XMLDocument 를 탐색할때는 대소문자를 구별 하도록 만들었습니다.

마구마구 귀찮아져서 막판에 소스가 개판으로 치닫은 게 있긴 했지만 일단 그럭저럭 잘 동작하는 것 같으니 공개.

다른(..이라고는 하지만 Ext.DomQuery 랑 Prototype.js 만) CSS query engine 하고 속도를 비교할 수 있도록 sample.html 을 만들어봤습니다.

css_query_engine.zip

최신 버젼은 맨 위에 나와있는 서브버젼을 통해 받으셈


아래는 제 컴퓨터에서 확인한 테스트 결과이고요,
쿼리 샘플은 여기에서 따왔습니다.
빨간색과 회색글자는 지원하지 않는 쿼리라는 뜻입니다. 좀 많네요-_- (nth-child 는 만들었었는데 DomQuery 보다 5~6배나 느려서 일단 주석처리 해버렸습니다;;)

사용자 삽입 이미지


여기에는 없지만

div p.foo[align=center] + div#test ul li:empty
이런 형태로 #아이디 가 쿼리 중간에 들어있거나

div.foo.bar[align=center][align*=str]:empty
식으로 여러가지 제약조건이 붙은 상태의 쿼리 경우에는 DomQuery 보다 꽤 빠른 실행시간을 확인하실 수 있을겁니다.

근데 이름을 뭘로 짓지?
BoASelector? -_-;
음 이건 영어단어의 구성이 왠지 간지가 안 나는데-_-a

예전에 만들었던 야구찌BBS 가 생각나네;;

ps. 나머지 Pseudo class 도 구현해야 할 생각하니까 가슴이 답답해진다;;
영양가 있는 포스팅인가요
(총 4분이 투표해서 3.8점) 3.8점
2007/05/06 17:49 2007/05/06 17:49

Trackback Address :: http://hooriza.com/trackback/1165

  1. 요와이 2007/05/10 09:20 댓글주소 | 수정 | 삭제 | 댓글

    근데 이건 어디에 어떻게 사용하는 거에요?

    • 후리자 2007/05/10 13:23 댓글주소 | 수정 | 삭제

      자바스크립트에서 원하는 DOM 객체 찾고 싶을때, XMLDocument 에서 원하는 노드 찾고 싶을때 사용하고, 사용방법은 CSSSelector.query(쿼리명); 하면 Element 의 배열이 반환되지.

  2. 우시경 2007/05/10 10:18 댓글주소 | 수정 | 삭제 | 댓글

    와~ 정말 이딴게 쓸모가 있긴 있는거예요? 존내 어려워요 후리자님~

  3. 한최아 2007/05/10 14:13 댓글주소 | 수정 | 삭제 | 댓글

    난감하네효.

  4. 김유철 2007/05/21 14:08 댓글주소 | 수정 | 삭제 | 댓글

    굿잡이십니다.

[로그인][오픈아이디란?]