YUI 압축기는 다음을 포함한 JavaScript 콘텐츠를 압축합니다.
- 댓글 삭제
- 추가 공백 제거
- 사소한 최적화
- 식별자 대체
YUI Compressor에는 어떤 미묘한 최적화가 포함되어 있나요?
- object["property"] , 속성 이름이 유효한 JavaScript 식별자(참고: 유효한 JavaScript 식별자는 문자로 시작하고 선택적으로 하나 이상의 문자, 숫자 또는 밑줄이 뒤따름)이고 예약어가 아닌 경우 최적화됩니다. 대상: object.property
- {"property":123}, 속성 이름이 유효한 JavaScript 식별자이고 예약어가 아닌 경우 {property:123}으로 최적화됩니다(참고: 객체 리터럴에서 속성 이름이 유효한 JavaScript 식별자인 경우). 예약어가 아니며 속성 이름을 인용할 필요가 없습니다).
- 'abcd'efgh'는 "abcd'efgh"로 최적화됩니다.
- 문자열이 연결된 경우 "abcd" + "efgh"는 "abcdefgh"로 최적화됩니다. (참고: 모두 YUI Compressor를 사용한다는 전제하에 스크립트의 문자열 연결에 대해 커넥터 "+" 사용의 효율성과 효율성은 최고의 유지 관리성).
JavaScript에 대한 가장 효과적인 압축 최적화는 식별자 교체입니다.
예를 들어:
(기능(){
함수 추가(숫자1, 숫자2) {
숫자1 + 숫자2를 반환합니다.
}
})();
속 식별자를 교체한 후:
(기능(){
함수 A(C, B) {
C+B를 반환합니다.
}
})();
추가 공백을 제거하면 다음과 같이 끝납니다.
(함수(){함수 A(C,B){return C+B;}})();
YUI 압축기 식별자 대체는 함수 이름과 변수 이름만 대체하는데 대체할 수 없는 것은 무엇입니까?
- 기본 값: 문자열, 부울, 숫자, null 및 정의되지 않음. 일반적으로 문자열이 가장 많은 공간을 차지하고 숫자가 아닌 리터럴(true, false, null, underfinded)이 그 뒤를 따릅니다.
- 전역 변수: 창, 문서, XMLHttpRequest 등 가장 일반적으로 사용되는 것은 문서와 창입니다.
- foo.bar와 같은 속성 이름. 차지하는 공간은 문자열 다음으로 많습니다. "." 연산자는 대체될 수 없으며 abc는 더 많은 공간을 소비합니다.
- 키워드. 자주 남용되는 키워드는 var, return입니다. 최고의 최적화 방법: var 및 return 키워드는 함수에서 한 번만 나타납니다.
기본 값, 전역 변수 및 속성 이름에 대한 최적화 처리는 대략 동일합니다. 2회 이상(2회 포함) 사용된 모든 리터럴 값, 전역 변수 또는 속성 이름은 로컬 변수 저장소로 대체되어야 합니다.
그러나 식별자 대체가 금지되는 몇 가지 상황이 있습니다.
- eval() 함수를 사용하세요. 해결책: eval()을 캡슐화하는 전역 함수를 사용하거나 생성하지 마십시오.
- with 문을 사용하세요. 해결책: 방법은 위와 동일합니다.
- JScript에 대한 조건부 주석입니다. 유일한 해결책은 사용하지 않는 것입니다.
YUI Compressor는 Rhino 인터프리터를 기반으로 구축되었으므로 위의 모든 최적화가 안전합니다.
추가 자료:
"YUI 압축기를 사용한 극도의 JavaScript 압축"
원래의:
http://www.planabc.net/2009/08/02/javascript-compression_with_yui_compressor/