Предотвращение компилятора закрытия от переименования определенных переменных
У меня есть файл javascript с глобальным объектом, который нельзя переименовать (_gat
из трекера Google Analytics async).
Этот объект нельзя переименовать компилятором Google Closure, поскольку Google Analytics ищет переменную с этим конкретным именем.
Я рассмотрел упоминания Javascript Doc, которые упомянуты: http://code.google.com/closure/compiler/docs/js-for-compiler.html - Однако я ничего не могу найти относительно "защиты", переменной.
Проблема существует независимо от того, использую ли я простую или расширенную компиляцию.
Как я могу гарантировать, что переменная _gat
не переименована?
Ответы
Ответ 1
Используя Closure Compiler, вы можете установить js_externs
. Подробнее см. Расширенные компиляции и экстерьеры.
// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @output_file_name default.js
// @js_externs _gat
// ==/ClosureCompiler==
Ответ 2
Используйте функцию goog.exportSymbol из base.js. Документация находится здесь: http://closure-library.googlecode.com/svn/docs/closure_goog_base.js.html
Использование похоже на
goog.exportSymbol("_gat", _gat)
Ответ 3
Смотрите http://closuretools.blogspot.com/2011/01/property-by-any-other-name-part-1.html часть о "Все без кавычек"
включение определенных vars внутри '' → > 'bob' предотвращает их переименование компилятором
Ответ 4
Если он не объявлен как часть кода, который вы компилируете, чем соответствующая декларация extern:
http://code.google.com/closure/compiler/docs/api-tutorial3.html#externs