2009-12-13 5 views
5

구글은 "폐쇄"전체 웹 페이지에 Google Closure를 적용하는 방법은 무엇인가요?

http://closure-compiler.appspot.com/home

라는 아주 좋은 자바 스크립트 압축기를 가지고 그러나 HTML 파일 내에서 인라인 자바 스크립트를 사용하는 고통입니다.

질문 : 입력을 "uncompress.html"로 지정하면 모든 인라인 JavaScript가 압축 된 해당 HTML의 압축 버전이 나옵니다.

+2

어떤 이유로 당신이 HTML 파일 내에서 자바 스크립트를 인라인 필요합니까 ..., HTML을 최소화하기 위해 많은 필요를 보지 못했어요? –

+2

즉시 실행하려면 JS가 필요합니다. 따라서 이것을 수행하기 위해 금식하는 방법은 JS 인라인을 사용하는 것입니다. 또한이 JS는 하나의 HTML 페이지에만 사용됩니다 – NickH

답변

2

축소 자, 난독 처리자 및 압축기는 페이지를로드 할 때 외부 요소를 다운로드하는 문제를 해결하도록 설계되었습니다. 그것들은 일반적으로 인라인 자바 스크립트 나 CSS에 사용되는 것을 의미하지는 않았는데, 그 이유는 많은 것들이 보통 페이지 외부에서 별도의 파일로 유지되기 때문입니다.

gzip을 처리 할 수있는 브라우저의 경우 gzip을 가능한 많이 gzip해야하므로 사실상 인라인 CSS/javascript가 페이지에서 축소되지 않아야합니다. 당신이 PHP를 사용하는 경우

+0

당신은 생각 하겠지만 많이 자바 스크립트가 있습니다. 내 JS에서 Closure 만 실행하면 gzipped로도 거의 JavaScript가 거의 94 kb 줄어 듭니다. 자바 스크립트가 400kb에 다다 랐으므로 94kb의 gzipped JS를 자르고있는 것은 – NickH

+1

입니다. 인라인 자바 스크립트가 있으면 다운로드해야 할 자체 파이프가 있기 때문에 자체 파일에 있어야합니다. all.js 파일. 최신 브라우저에는 다운로드 용 파이프가 8 개있어서 너무 막히면 의심이됩니다. – AutomatedTester

+2

내 신 400kb (압축 된) 인라인 자바 스크립트 !!! – micmcg

1

,이 방법으로 구글의 컴파일러를 호출 한 다음 자바 스크립트

<?php 
    $script = file_get_contents('http://www.domain.com/scripts/script.js'); 
    $ch = curl_init('http://closure-compiler.appspot.com/compile'); 

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, 'output_info=compiled_code&output_format=text&compilation_level=SIMPLE_OPTIMIZATIONS&js_code=' . urlencode($script)); 
    $output = curl_exec($ch); 
    curl_close($ch); 

    header('Content-type: application/javascript'); 
    echo $output; 

?> 

link php code

0

미러링 AutomatedTester의 코멘트, 당신이 정말로 넣으면 안됩니다 돌아 헤더를 사용할 수 있습니다 너무 많은 자바 스크립트를 HTML 파일에 삽입하십시오.

당신이 정말 어떤 이유로 그렇게 할 경우에, 왜 당신은 할 수 없습니다 :

  1. 가 폐쇄와 함께가 압축 자바 스크립트를 포함하는 텍스트 파일
  2. 그것을 복사합니다 당신의 <script></script> 태그에

나는이 자동 아니라는 것을 알고 있지만, 만 t을 수행해야한다 당신이 배치 할 때, 당신은 1 시간마다 배치하지 않을 것입니다, 맞습니까? GZIP는 일반적으로 충분히 좋은 일을하기 때문에

나는

관련 문제