16

我有一个 javascript 文件,其中包含一个不能重命名的全局对象(_gat来自 Google Analytics 异步跟踪器)。

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

我查看了提到的 Javascript Doc 符号:http ://code.google.com/closure/compiler/docs/js-for-compiler.html - 但是,我找不到任何关于“保护”的信息多变的。

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

如何确保_gat变量不被重命名?

4

4 回答 4

16

使用Closure Compiler Web 应用程序,您可以设置js_externs. 有关更多示例,请参阅高级编译和外部

// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @output_file_name default.js
// @js_externs _gat
// ==/ClosureCompiler==
于 2010-08-06T22:43:03.943 回答
6

使用 base.js 中的 goog.exportSymbol 函数。文档在这里:http ://closure-library.googlecode.com/svn/docs/closure_goog_base.js.html

用法就像

goog.exportSymbol("_gat", _gat)
于 2010-06-11T20:04:56.190 回答
3

请参阅http://closuretools.blogspot.com/2011/01/property-by-any-other-name-part-1.html关于“所有未引用”的部分

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

于 2011-08-16T14:35:49.403 回答
2

如果它没有被声明为您正在编译的代码的一部分,那么 extern 声明是合适的: http ://code.google.com/closure/compiler/docs/api-tutorial3.html#externs

于 2010-06-28T21:25:12.820 回答