자주 묻는 질문(FAQ)


클로저 컴파일러란 무엇인가요? 왜 사용해야 하나요?
클로저 컴파일러는 자바스크립트를 다운로드하고 더 빠르게 실행할 수 있는 도구입니다. 클로저 컴파일러를 사용하여 자바스크립트 파일의 크기를 줄이고 효율성을 높일 수 있습니다.
클로저 컴파일러는 외부에 있는 다른 자바스크립트 압축 프로그램과 어떻게 다른가요?

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

단순 모드에서 클로저 컴파일러는 컴파일러와 같은 분석을 사용하여 코드 크기를 최소화할 수 있는 다른 방법을 찾기 때문에 다른 도구보다 더 잘 작동할 수 있습니다. 예를 들어 클로저 컴파일러는 몇 번만 사용되는 함수를 인라인 처리하고, 변수 이름을 재사용하고, 상수 표현식을 미리 계산할 수 있습니다.

고급 모드에서 클로저 컴파일러는 추가된 유형 주석을 사용하여 인지하기 어려운 버그를 찾을 수도 있습니다.

클로저 컴파일러에서 HTML에 삽입된 자바스크립트를 컴파일할 수 있나요?
아니요. 클로저 컴파일러는 자바스크립트만 포함된 파일에서만 작동합니다.
클로저 컴파일러를 다른 자바스크립트 축소자와 함께 사용할 수 있나요?

예. 클로저 컴파일러는 모든 유효한 자바스크립트를 읽고 유효한 자바스크립트를 생성하므로, 다른 압축 도구를 통해 파일을 실행하기 전이나 실행한 후에 클로저 컴파일러를 자바스크립트 파일에 적용할 수 있습니다.

클로저 컴파일러 및 기타 축소 도구에는 수신 코드에 대한 기대치가 있을 수 있습니다. 예를 들어 댓글을 삭제하는 축소기는 다른 도구에 필요한 라이선스나 주석 정보를 삭제할 수 있습니다.

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