2013-08-28 3 views
2

GWTJava 소스를 최적화 된 Javascript으로 컴파일하는 것으로 잘 알려져 있습니다. 예를 들어, 사용하지 않는 모든 기능을 제거합니다. gwtQuery과 같은 타사 라이브러리를 사용하는 경우 유용합니다.GWT는 임베디드 자바 스크립트를 최적화합니까?

나는 GWT도 최적화 할 수있는 방법이 있는지 궁금 당신이 <script> 태그를 HTML 페이지에 포함 Javascript. 예를 들어 사용자가 전체 JQueryJavascript 라이브러리를 다운로드하는 대신 사용되는 몇 가지 기능 만 다운로드하십시오.

+0

잘 모르겠지만 GWT에 대해 알고있는 것으로부터 나는 아니오라고 대답 할 수는 없습니다. 하지만 jQuery (또는 사용자가 가지고있는 다른 함수)가로드되기 전에 필요한지 테스트 할 수 있습니다 (http://stackoverflow.com/questions/1014203/best-way-to-use-googles-hosted). -jquery-but-fall-back-to-my-hosted-library-on-go – Churro

+0

gwtquery는 3party 자바 스크립트 라이브러리가 아니기 때문에 전체 GWT 라이브러리 (사실 자바의 jquery API를 다시 작성)이므로 필요하지 않습니다. gwt 컴파일러가 사용되지 않는 메소드를 없애고 모든 코드를 최적화하기 때문에 모든 종류의 최적화가 가능합니다. 아마도 jquery를 의미했을 것입니다 (질문을 편집 할 수 있습니다). gwtquery를 가져 오면 API를 사용하지 않아도됩니다. jwery 플러그인이 java로 작성 되었기 때문에 jquery 플러그인이 js로 작성되었으므로 jquery 플러그인이 필요합니다. 어쨌든, 비트 jquery를 최적화하는 유일한 방법은 코드를 jsni 블록에 복사하는 것입니다.하지만 작동하지 않습니다. –

답변

1

페이지에 추가하는 <script> 태그에 대해 이야기하고 있다면 대답은 '아니오'입니다. HTML 페이지에 태그를 추가하고 있습니다. GWT는 html 파일 자체를 다시 작성하지 않고도 GWT가 할 일을 알거나 HTML의 위치를 ​​변경하는 방법이 없습니다. 작업).

JS를 응용 프로그램의 JSNI 메소드에 넣는 것에 대해 이야기하는 경우, 대답은 '일종의'또는 '의존적 인'것입니다. GWT 2.4 이전 버전을 사용하는 경우 문자열을 인라인하거나 매우 간단한 방법으로 인라이닝하는 것과 같이 매우 제한된 최적화 만 수행됩니다. GWT 2.5 또는 그 이후 버전 인 을 사용하는 경우 Closure Compiler 옵션을 사용하도록 설정하면 Closure가 JSNI 메소드를 포함하여 컴파일 된 출력의 모든 소스를 수정합니다. Closure를 염두에두고 설계되지 않은 경우이 최적화로 인해 일부 JS 소스가 손상 될 수 있습니다.

+0

GWT가 컴파일 단계에 추가 할 수 있도록 js 파일을 어딘가에 추가하는 것이 너무 이상하지 않습니다. 모든 외부 js 파일을 (자바 소스 파일에서) 컴파일 된 자바 스크립트 코드에 추가 한 다음 닫는 것이 가능하도록 할 수 있습니다. 그래서 제 관점에서는 가능합니다. js를 추가하는 방법에 관한 문제 일뿐입니다. 어쩌면 JSNI를 통해 외부 JS 코드를 추가하는 방법이있을 수 있습니다. 그러나 GWT가 HTML 페이지를 다시 작성하게하는 것은 맞지 않습니다. 가능하다고 생각 하나 아직 구현되지 않았습니까? 그리고 JSNI를 사용하여 완벽한 외부 JS 파일을 추가하고 GWT가 사용하지 않는 메소드를 제거 할 수 있습니까? – Vjeetje

+0

GWT가 Java에서 JavaScript 로의 컴파일러임을 기억하면 이상하게 보이지 않습니다. GWT는 HTML 페이지를 다시 작성해서는 안되며, GWT는 모듈 파일에서 JS를 다시 작성하지 않아야합니다. (다른 서버에서로드하여 변경하려고하면 어떻게해야합니까? GWT를 지원하지 않는 JS를'with '선언문에 접근 할 때 리플렉션을 수행하기 위해'eval'을 사용한다면 어떻게 될까요?). 마지막으로 JSNI에는 JS가 포함될 수 있지만 클로저를 사용하도록 설정 한 경우에만 최적화됩니다 (추가 메서드가 제거됨). –