자주 묻는 질문(FAQ)


Closure Compiler란 무엇인가요? 사용해야 하는 이유
Closure Compiler는 JavaScript 다운로드 및 실행 속도를 높이는 도구입니다. Closure Compiler를 사용하여 JavaScript 파일의 크기를 줄이고 효율성을 높일 수 있습니다.
Closure Compiler는 다른 JavaScript 압축기와 어떻게 다른가요?

일반적으로 Closure Compiler는 다른 코드 축소 도구의 압축을 충족하거나 초과하며 웹 애플리케이션의 다운로드 시간을 개선합니다. 또한 Closure Compiler를 사용하면 테스트 중에가 아닌 개발 중에 구문 오류를 찾고 잠재적으로 버그가 있는 코드 패턴을 식별할 수 있습니다.

단순 모드에서는 Closure Compiler가 컴파일러와 유사한 분석을 사용하여 코드 크기를 최소화하는 추가 방법을 찾기 때문에 다른 도구보다 더 나은 성능을 발휘할 수 있습니다. 예를 들어 Closure Compiler는 몇 번만 사용되는 함수를 인라인 처리하고, 변수 이름을 재사용하고, 상수 표현식을 사전 계산할 수 있습니다.

고급 모드에서 Closure Compiler는 추가된 유형 주석을 사용하여 발견하기 어려운 버그를 찾을 수도 있습니다.

Closure Compiler가 HTML에 삽입된 JavaScript를 컴파일할 수 있나요?
아니요. Closure Compiler는 JavaScript만 포함된 파일에서만 작동합니다.
Closure Compiler를 다른 JavaScript 축소 도구와 함께 사용할 수 있나요?

예. Closure Compiler는 유효한 JavaScript를 읽어 유효한 JavaScript를 생성하므로 다른 축소 도구를 통해 파일을 실행하기 전이나 후에 JavaScript 파일에 Closure Compiler를 적용할 수 있습니다.

Closure Compiler 및 기타 축소 도구는 수신 코드에 관한 기대치가 있을 수 있습니다. 주석을 삭제하는 축소기는 다른 도구에 필요한 라이선스나 주석 정보를 삭제할 수 있습니다.

Closure Compiler에서 생성된 JavaScript를 디버그하려면 어떻게 해야 하나요?
컴파일된 코드에서 오류가 발생하거나 예상치 못한 동작이 나타나는 경우 소스 맵을 사용하여 문제를 디버그할 수 있습니다. 소스 맵은 컴파일된 코드와 원본 소스 코드 간의 매핑을 제공하므로 브라우저의 개발자 도구에서 컴파일된 코드 대신 원본 소스 코드를 표시할 수 있습니다. Closure Compiler가 소스 맵을 생성하도록 하려면 명령줄에서 --create_source_map 플래그를 전달하세요. 예를 들면 다음과 같습니다.
$ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js
그런 다음 소스 맵을 지원하는 브라우저 (예: Chrome 또는 Firefox)를 사용하는 경우 컴파일되지 않은 코드와 마찬가지로 중단점을 설정할 수 있으며 브라우저의 개발자 도구에 원본 소스의 해당 코드 줄이 표시됩니다. 소스 맵에 관한 정보를 비롯한 Chrome 개발자 도구에 관한 자세한 내용은 JavaScript 디버깅을 참고하세요.
컴파일러가 애플리케이션의 실행 속도와 다운로드 코드 크기 간에 상충 관계를 만드나요?
예. 최적화 컴파일러는 모두 절충을 합니다. 일부 크기 최적화는 약간의 속도 오버헤드를 도입합니다. 하지만 Closure Compiler의 개발자는 상당한 추가 런타임을 도입하지 않도록 주의했습니다. 컴파일러의 일부 최적화는 런타임을 줄이기도 합니다 (다음 질문 참고).
컴파일러가 속도에 맞게 최적화하나요?
다운로드 시간이 일반적으로 웹 애플리케이션에서 가장 중요한 속도 요소이므로 대부분의 경우 코드가 작을수록 속도가 빠릅니다. 중복을 줄이는 최적화는 코드 실행 시간도 단축합니다.
컴파일할 수 있는 파일 크기에 제한이 있나요?
컴파일 웹 서비스에는 최대 파일 크기가 있지만 독립형 컴파일러 애플리케이션에는 없습니다.
Closure Compiler는 모든 플랫폼에서 사용할 수 있나요?
컴파일러는 Java로 작성되어 있으므로 Java가 실행되는 곳이라면 어디에서나 실행할 수 있습니다.
컴파일러가 모든 합법적인 JavaScript를 처리할 수 있나요?
대부분 eval()with()을 비롯한 일부 JavaScript 구조는 컴파일러의 변환이 기반으로 하는 가정을 무효화할 수 있습니다.
Closure Compiler를 사용하려면 웹 개발에 대해 얼마나 알아야 하나요?
Closure Compiler는 JavaScript 개발 도구이므로 컴파일러를 사용하려면 JavaScript로 프로그래밍하는 방법을 알아야 합니다. 하지만 JavaScript를 사용하는 사람이라면 누구나 Closure Compiler를 사용하면 이점을 얻을 수 있습니다.
Closure Compiler는 Closure Library와 어떻게 작동하나요?
Closure Compiler는 Closure Library를 사용하는 코드에 특별한 검사와 최적화를 제공합니다. 또한 Closure Compiler 서비스는 Closure Library 파일을 자동으로 포함할 수 있습니다. Finding Your Way around Closure에서는 필요한 Closure 부분을 선언하는 구문을 설명합니다. API와 함께 Closure Library를 사용하는 방법에 관한 자세한 내용은 API 참조를 참고하세요. Closure Compiler 애플리케이션과 함께 Closure Library를 사용하려면 먼저 Closure Library를 다운로드해야 합니다. Closure Library 지원은 컴파일러 애플리케이션에서 기본적으로 사용 설정되어 있습니다.
ADVANCED_OPTIMIZATIONS로 컴파일하면 코드가 작동하지 않거나 컴파일러에서 오류가 발생합니다. 왜냐하면
고급 모드를 사용하려면 일반적으로 준비 작업과 코드 변경이 필요합니다. 고급 컴파일 및 Externs에서는 코드가 ADVANCED_OPTIMIZATIONS에서 작동하는지 확인하는 방법을 설명합니다.
컴파일된 스크립트에 임의의 줄바꿈이 있는 이유는 무엇인가요?
Closure Compiler는 의도적으로 약 500자마다 줄바꿈을 추가합니다. 방화벽과 프록시는 때때로 매우 긴 줄이 있는 대규모 JavaScript 파일을 손상시키거나 무시합니다. 500자마다 줄바꿈을 추가하면 이 문제를 방지할 수 있습니다. 줄바꿈을 삭제해도 스크립트의 시맨틱스에는 영향을 주지 않습니다. 코드 크기에 미치는 영향은 작으며 컴파일러는 파일이 gzip으로 압축될 때 코드 크기 페널티가 훨씬 작아지도록 줄바꿈 배치를 최적화합니다.
소스 코드에 표시되어야 하는 저작권 고지 또는 오픈소스 라이선스 텍스트가 있습니다. Closure Compiler가 이 텍스트를 삭제하지 않도록 하려면 어떻게 해야 하나요?
Closure Compiler는 JSDoc @license 태그를 지원합니다. 컴파일러 출력에서 주석을 유지하려면 JSDoc 주석에 @license 태그를 추가하세요. 자세한 내용은 Closure Compiler용 JavaScript 주석 달기를 참고하세요.