2012-11-04 3 views
1

이미이 작업을 수행하는 라이브러리가 있습니까? 내가 찾을 수있는 것은 온라인 도구뿐입니다. 내가 자바 스크립트에서 이것을하고 싶은 이유는 문자열 a > b, aa> b,a과 같기를 원하기 때문입니다. CSS로 압축하면 모든 버전이 같은 문자열로 끝납니다.자바 스크립트를 사용하여 CSS 선택자 문자열을 압축하는 방법

이유에 대한 더 자세한 설명 : jQuery 선택기 (이 내용은 $('div'))를 캐시하기 위해 jQuery 플러그인을 작성했습니다. 이는 키 값 쌍을 저장하여 작동합니다. 여기서 키는 선택자 문자열이고 값은 발견 된 DOM 요소입니다. 이것이 내가 CSS 선택기 문자열을 비교하는 이유입니다. 그렇지 않으면 본질적으로 동일한 선택기 인 다른 키를 저장하게됩니다.

+0

압축이란 무엇입니까? 어쨌든 왜 선택자를 압축하려고합니까? – BoltClock

+1

런타임에 왜 그렇게해야합니까? – zerkms

+3

비교할 목적으로 셀렉터 * (또는 적어도 공백 문자) *를 표준화하는 방법이 있는지 실제로 묻는 것처럼 들립니다. 그게 맞습니까? –

답변

-1

Uglify.js (https://github.com/mishoo/UglifyJS)를 사용하면 CSS 압축을 자동화 할 수 있습니다. 불필요한 공백과 주석을 제거합니다. 이렇게하면 원하는대로 정상화 할 수 있습니다. Uglify 소스를보고 필요한 구성 요소 만 추출해야합니다.

내가 실험했을 때 : http://refresh-sf.com/yui/ 그것은 셀렉터가 항상 적절히 축소되었다고 생각합니다 (비록 그것이 uglifyjs가 아닌 YUI를 사용했지만). 유일한 문제는 a> b, b와 b, a> b의 차이입니다. 그것을 위해 나는 첫째로 minifying 다음 ','으로 나누는 것이 좋습니다; 배열을 사전 순으로 정렬합니다. 마지막으로 분할 배열에 다시 가입하십시오. 일단 완료되면 그 값을 해시로 사용할 수 있습니다.

+0

왜 투표가 늦습니까? – Parris

+0

필요한 것은 CSS 파일의 축소 나 압축이 아니라 JS 코드에 포함 된 CSS 선택기를 표준화하여 예를 들어 사용 된 공백 문자 만 다른 두 개의 선택기 문자열이 동일하게 간주되기 때문입니다. – GregL

+0

@ GregL 유효한 CSS 조각을 축소하면 정상화되지 않습니까? 여분의 공백이있는 경우 모두 제거해야합니다. 압축은이 경우 정규화입니다. 시도하십시오> b, a {배경 : # 000; } vs a> b, a a> b, a} (http://refresh-sf.com/yui/). 모든 유사 콘텐츠가 동일한 결과를 가져와야합니다. – Parris