14

Tengo un archivo javascript con un objeto global que no debe renombrarse (_gat desde el rastreador asincrónico de Google Analytics).Evitar que el compilador de cierre cambie el nombre de ciertas variables

Este objeto no debe ser renombrado por el compilador de cierres de Google, ya que Google Analytics busca una variable con este nombre específico.

He investigado las notaciones de Javascript Doc que se mencionan: http://code.google.com/closure/compiler/docs/js-for-compiler.html - Sin embargo, no encuentro nada con respecto a la "protección" de una variable.

El problema existe no importa si uso la compilación simple o avanzada.

¿Cómo puedo asegurarme de que la variable _gat no se renombre?

Respuesta

16

El uso de aplicaciones web Closure Compiler , puede establecer js_externs. Consulte Advanced Compilation and Externs para obtener más ejemplos.

// ==ClosureCompiler== 
// @compilation_level ADVANCED_OPTIMIZATIONS 
// @output_file_name default.js 
// @js_externs _gat 
// ==/ClosureCompiler== 
+0

todavía cambia –

6

Usa la función goog.exportSymbol de base.js. La documentación está aquí: http://closure-library.googlecode.com/svn/docs/closure_goog_base.js.html

uso es como

goog.exportSymbol("_gat", _gat) 
+0

¿Se puede elaborar un poco en ese ¿Por favor? ¿Dónde puedo encontrar más información? – phidah

+0

(Lo siento por la breve respuesta inicial, estaba respondiendo desde mi teléfono y mi pantalla-teclado-fu es débil). –

3

Ver http://closuretools.blogspot.com/2011/01/property-by-any-other-name-part-1.html la parte de "Todo Unquoted"

poner ciertos vars dentro '' >>> 'bob' les impide su cambio de nombre por el compilador

+1

Esta es una opción interesante. Incluso al realizar ADVANCED_OPTIMIZATIONS, Closure no cambiará el nombre de las referencias de cadenas a los métodos. Por ejemplo, no cambiará el nombre de window.foo si se hace referencia a él como: window ['foo'] –

Cuestiones relacionadas