14

J'ai un fichier javascript avec un objet global qui ne doit pas être renommé (_gat depuis le tracker de Google Analytics).Prévention compilateur de fermeture de renommer certaines variables

Cet objet ne doit pas être rebaptisés par la fermeture de Google compilateur Google Analytics cherche une variable avec ce nom spécifique.

J'ai regardé dans les notations du Doc Javascript qui sont mentionnées: http://code.google.com/closure/compiler/docs/js-for-compiler.html - Cependant, je ne trouve rien concernant la "protection" d'une variable.

Le problème existe, que j'utilise une compilation simple ou avancée.

Comment puis-je faire en sorte que la variable _gat n'est pas renommé?

Répondre

16

utilisant Closure Compiler application web , vous pouvez définir js_externs. Reportez-vous à Advanced Compilation and Externs pour plus d'exemples.

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

il change encore –

6

Utilisez la fonction goog.exportSymbol de base.js. La documentation est ici: http://closure-library.googlecode.com/svn/docs/closure_goog_base.js.html

L'utilisation est comme

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

Pouvez-vous élaborer un peu sur ce S'il vous plaît? Où puis-je trouver d'autres informations? – phidah

+0

(Désolé pour la réponse initiale laconique, répondait de mon téléphone et mon écran-clavier-fu est faible). –

3

Voir http://closuretools.blogspot.com/2011/01/property-by-any-other-name-part-1.html la partie sur « Tous les non cotées »

mettre certains vars l'intérieur « » >>> « bob » les empêche d'être renommé par le compilateur

+1

Ceci est une option intéressante. Même lors de l'exécution de ADVANCED_OPTIMIZATIONS, Closure ne renommera pas les références de chaîne aux méthodes. Par exemple, il ne renommera pas window.foo s'il est référencé comme: window ['foo'] –

Questions connexes