2010-02-09 2 views
6

Possible Duplicate:
jQuery compiled with Google Closure CompilerИспользование Google Closure Compiler

Я использую JQuery и у меня есть все мои JS кода в файле application.js. Когда я компилирую «application.js» с компилятором Google Closure (используя опционные параметры), я получаю файл js без ошибок и предупреждений. Тем не менее, я не могу использовать файл на своей странице, я получаю ошибку при загрузке страницы, в которой говорится: «TypeError: Результат выражения» $ («div.tile»). D '[undefined] не является функцией ».

Мой вопрос: Можно ли скомпилировать js-файл, который использует jQuery?

ответ

1

Да, если вы хотите включить файл jQuery в свой другой файл.

Да, если вы используете простой режим, вместо этого.

В противном случае, нет.

+1

Это не будет работать на поставленный выше вопрос, потому что он хочет использовать передовые оптимизации; вы не можете запустить источник jQuery через продвинутый оптимизатор. Вы можете использовать только простой компилятор и указать параметр code_url jQuery, но это будет включать в себя всю полноту jQuery на выходе. – Gabe

16

Вы также можете использовать расширенный режим, если вы указываете, что ваш js-файл использует jQuery, указав файл «extern» для jQuery. Таким образом, компилятор закрытия не будет изменять ваши вызовы функций jQuery внутри вашего javascript.

java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --js_output_file application.js --externs jquery-1.4.4.externs.js 

Вы можете найти некоторые из Экстерных файлов Jquery здесь: http://code.google.com/p/closure-compiler/source/browse/trunk/contrib/externs/

8

Вы должны сказать Closure Compiler, что не оптимизировать.

Я делаю это с онлайн-компилятором (http://closure-compiler.appspot.com/home), добавляя параметр externs_url. Когда вы вводите свой код в онлайн-компиляторе, он автоматически добавляет заголовок, похожий на этот, но без параметра externs_url по умолчанию.

// ==ClosureCompiler== 
// @output_file_name default.js 
// @compilation_level ADVANCED_OPTIMIZATIONS 
// @externs_url https://closure-compiler.googlecode.com/git/contrib/externs/jquery-1.9.js 
// ==/ClosureCompiler== 

Вы можете увидеть, что ехЬегп файлы в настоящее время доступны на https://code.google.com/p/closure-compiler/source/browse/contrib/externs/. Они имеют большинство версий jQuery.

Чтобы сделать это с помощью загружаемой Java-версии компилятора, вы можете просто передать параметр -externs_url paramater в cli или загрузить файл extern, который вам нужен, и передать это имя файла с параметром -externs, как в ответе Палмерли.

Если вы заинтересованы в том, почему вы не можете просто включить продвинутых оптимизаций читать через http://code.google.com/closure/compiler/docs/api-tutorial3.html

+0

Как вы используете преамбулу с загружаемой Java-версией компилятора? Я получаю много «ERROR - переменная X незаявлен» и добавляет все из них, поскольку -externs очень громоздка. –

+0

@ lambdor Я думаю, вам нужно использовать вещь -externs для обычной загружаемой версии. Вы также можете получить доступ к онлайн-версии через свой API, который использует версию преамбулы https://developers.google.com/closure/compiler/docs/gettingstarted_api – Gabe

+0

«Чтобы сделать это с помощью загружаемой Java-версии компилятора, вы можете просто передать '--externs_url' на cli". Неверно, к сожалению, «' »--externs_url» не является допустимым вариантом ». – kuporific

Смежные вопросы