2013-10-30 2 views
2

일부 javascript 패키지의 경우 축소/uglified 파일 만 얻을 수 있습니다. 나는 그들을 다른 자바 스크립트 파일과 결합하고 Google 클로저 컴파일러로 컴파일해야한다.closure 컴파일러에서 uglified javascript 연결 및 컴파일

내 질문은 :

그 대신 uglified 하나, 폐쇄 컴파일러 원시 unminified 자바 스크립트를 통과하는 것이 바람직하다? (특히 고급 최적화 모드에서)

많은 자바 스크립트 라이브러리 (예 : jquery 및 angularjs)가 자체적으로 축소 된 버전을 제공하므로 이러한 스크립트를 다른 축소 작업 (uglify 또는 closure 컴파일)에 포함하면 걱정할 필요가 있습니다. 아니면 내가 그들을 밖으로 연결하고 그들을 연결해야합니까?

+0

브라우저가 축소 된 스크립트를 이해할 수 있으면 JS "컴파일러"라고 주장하는 도구도 사용해야합니다. 발생할 수있는 문제는 다른 축소 된 스크립트가 동일하게 명명 된 전역 변수를 사용하는 경우입니다. 축소는 종종 발생할 수있는 "a", "b"등과 같은 "짧은"이름의 변수 이름 변경을 포함하기 때문입니다. 그러나 좋은 스크립트는 어쨌든 전역 변수를 사용하지 않을 것입니다. 맞습니까? – CBroe

답변

2

마이크로 최적화가 필요한 경우 미니 파이어를보고 코드베이스에 가장 적합한 것을 확인하는 것이 좋습니다. 주요한 것들은 UglifyJS, Google Closure Compiler 및 ESMangle입니다. nice comparison on the Uglify website이 있습니다. 여러 minifier를 통해 코드를 실행하는 것은 과도한 것처럼 보일 수 있지만 더 나은 결과를 얻는다면 그 이유는 없습니다. :-)

미세 조정기는 이미 축소 된 것을 전달하면 신경 쓰지 않습니다. 예를 들어 프로덕션 환경에서 r.js 옵티 마이저를 사용하면 내 원본 코드와 축소 된 jQuery 등을 연결 한 다음 전체적으로 많이 uglify합니다.

라이브러리를 완전히 초기화하는 것에 대해 실제로 걱정할 필요가 없습니다. 빌드 단계에 더 많은 시간을 추가하는 것이므로 미루어지면 라이브러리를 나눠서 간단히 연결할 수 있습니다 .

+1

클로저 컴파일러의 경우에는 그렇지 않습니다. 클로저 컴파일러 (유형 검사, 정적 분석 및 불필요한 코드 제거 포함)의 이점은 단지 단순화 이상의 것입니다. 이미 그것을 통해 설계된 코드를 실행하여 코드를 축소하거나 큰 결과를 얻지는 않습니다. –

1

라이브러리에 따라 두 가지 경로가 있습니다

라이브러리가 unminified 소스를 제공하며이 ADVANCED_OPTIMIZATIONS 다음 최고의 옵션은 소스 파일로에 전달하는 것입니다와 호환되는 것으로 알려진 경우
  1. . 이 옵션은 소스뿐만 아니라 라이브러리 소스에서도 불필요한 코드 제거의 이점을 누립니다.

  2. 라이브러리가 축소 된 소스 만 제공하거나 ADVANCED_OPTIMIZATIONS과 호환되지 않는 것으로 알려져있는 경우 최상의 옵션은 라이브러리의 externs를 사용하여 코드를 컴파일하는 것입니다. 요청 수를 최소화하려면 결과를 연결해야합니다. 컴파일러 레벨이 WHITESPACE_ONLY 일 수는 있지만, 가장 적합한 도구는 아닙니다.

물론 라이브러리를 소스와 결합하면 요청을 최소화 할 수 있지만 동시에 라이브러리 호스팅을 위해 CDN을 사용하면 모든 캐싱 이점을 무효화합니다.

관련 문제