Можно ли использовать компилятор Closure ADVANCED_OPTIMIZATIONS с jQuery?

Я все время получаю ошибки, что функция (переименованная) не существует для данного объекта. Есть ли релиз, настройка или что-то еще, чтобы это работало?


person 700 Software    schedule 25.10.2010    source источник
comment
Я отправил запрос на то, чтобы jQuery стал полностью совместимым с компилятором закрытия :) Это позволило бы удалить весь неиспользуемый jQuery и сделать скомпилированный код действительно загадочным :) bugs.jquery.com/ticket/7318   -  person 700 Software    schedule 26.10.2010


Ответы (3)


Вам необходимо объявить jQuery как внешний компонент для компилятора ... однако я не уверен, что кто-то его создал, был файл extern для 1.3.2, но я не видел версий 1.4+.

Изменить: эта ветка проблемы имеет сообщество, создающее версию 1.4.

person Nick Craver    schedule 25.10.2010
comment
Сборка 1.7.3pre была завершена с совместимостью CC-AO: groups.google.com/forum/?fromgroups = #! topic / jquery-bugs-team / - person Paul Irish; 01.10.2012
comment
Новые файлы extern jQuery (включая 1.8) находятся в коде .google.com / p / closure-compiler / source / browse / trunk / contrib /. - person Taha Jahangir; 28.01.2013
comment
Ссылка externs contrib теперь выглядит как code.google.com/ п / закрытие-компилятор / источник / просмотр / - person Chris Kimpton; 22.08.2013

При использовании расширенного режима компилятора Closure с jQuery необходимо использовать файл externs для jQuery. Файл Extern сообщит компилятору, что это зарезервированные методы, и примет эти аргументы и типы данных аргументов должны быть такими, поэтому не уменьшайте имена методов и не проверяйте типы данных аргументов таким образом.

Вы можете получить файл externs, созданный разработчиками Google здесь. Этот файл создан для jQuery-1.4.3. Но на данный момент, вероятно, будет работать любая версия jQuery. Недавно добавленные методы могут не включаться в этот файл, поэтому вы должны добавить их в файл externs, синтаксис и синонимы настолько просты.

Также вы можете указать компилятору расположение файла externs, используя дополнительный флаг компилятора. Синтаксис должен быть таким

--compiler_flags= "--externs=path/to/jquery.externs.js"

Также вы можете использовать этот инструмент, который представляет собой онлайн-экстрактор externs для Closure Library.

person Fatih Acet    schedule 20.05.2012

jQuery (пока) несовместим с компилятором Closure в расширенном режиме. Я согласен, что было бы очень хорошо сделать его совместимым, потому что его синтаксис цепочки методов очень легко поддается виртуализации прототипа для значительного повышения скорости выполнения.

Фактически, среди популярных библиотек JavaScript (кроме Closure Library) только Dojo Toolkit совместим с расширенным режимом Closure.

http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf?by-user=t

person Stephen Chung    schedule 10.03.2011
comment
Вы можете использовать jQuery с Google Closure Compiler в расширенном режиме. Я так работаю во всех своих проектах. Все, что вам нужно, это файл externs, созданный для методов jQuery. - person Fatih Acet; 20.05.2012
comment
Верно, но тогда вы упускаете многие из лучших преимуществ расширенного режима - он выглядит почти как супер-простой режим. Правильная перезапись jQuery должна удалить даже сам объект jQuery и девиртуализировать каждый метод. - person Stephen Chung; 21.05.2012