Я все время получаю ошибки, что функция (переименованная) не существует для данного объекта. Есть ли релиз, настройка или что-то еще, чтобы это работало?
Можно ли использовать компилятор Closure ADVANCED_OPTIMIZATIONS с jQuery?
Ответы (3)
Вам необходимо объявить jQuery как внешний компонент для компилятора ... однако я не уверен, что кто-то его создал, был файл extern для 1.3.2, но я не видел версий 1.4+.
Изменить: эта ветка проблемы имеет сообщество, создающее версию 1.4.
При использовании расширенного режима компилятора 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.
jQuery (пока) несовместим с компилятором Closure в расширенном режиме. Я согласен, что было бы очень хорошо сделать его совместимым, потому что его синтаксис цепочки методов очень легко поддается виртуализации прототипа для значительного повышения скорости выполнения.
Фактически, среди популярных библиотек JavaScript (кроме Closure Library) только Dojo Toolkit совместим с расширенным режимом Closure.