Javascript 阻止闭包编译器重命名某些变量

Javascript 阻止闭包编译器重命名某些变量,javascript,compression,google-closure,google-closure-compiler,Javascript,Compression,Google Closure,Google Closure Compiler,我有一个javascript文件,其中包含一个全局对象,不能重命名(\u gat来自Google Analytics async tracker) Google Closure编译器不得重命名此对象,因为Google Analytics会查找具有此特定名称的变量 我研究了上面提到的Javascript文档符号:-但是,我找不到任何关于变量“保护”的内容 无论我使用简单编译还是高级编译,问题都存在 如何确保未重命名\u gat变量?使用base.js中的goog.exportSymbol函数。文件

我有一个javascript文件,其中包含一个全局对象,不能重命名(
\u gat
来自Google Analytics async tracker)

Google Closure编译器不得重命名此对象,因为Google Analytics会查找具有此特定名称的变量

我研究了上面提到的Javascript文档符号:-但是,我找不到任何关于变量“保护”的内容

无论我使用简单编译还是高级编译,问题都存在


如何确保未重命名
\u gat
变量?

使用base.js中的goog.exportSymbol函数。文件如下:

用法就像

goog.exportSymbol("_gat", _gat)

如果未将其声明为您正在编译的代码的一部分,则外部声明是合适的:

使用web app,您可以设置
js\u外部程序
。有关更多示例,请参阅

// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @output_file_name default.js
// @js_externs _gat
// ==/ClosureCompiler==
请参阅关于“全部未引用”的部分


将某些变量放在'>>>'bob'中可以防止编译器重命名它们

请详细说明一下好吗?我在哪里可以找到更多的信息?(很抱歉,最初的回复很简短,是从我的手机回复的,我的屏幕键盘很弱)。这是一个有趣的选择。即使在执行高级_优化时,闭包也不会重命名方法的字符串引用。例如,如果引用类似于:window['foo'],它将不会重命名window.foo