0

Ich habe die neueste Abschluss Compiler JAR-Datei heruntergeladen und folgte den Anweisungen , um zu sehen, wie ich es bekommen kann, Referenzen auf JS-Funktionen erhalten woanders definiert.Closure Compiler mit erweiterten Optimierungen und Externes

Mein Testskript, hello.js ist als

function hello(nom) 
{ 
alert(nom + familyName()); 
} 

Mein externs folgt externs.js in der Datei definiert werden, die den Code

function familyName(){} 

I enthält, die dann ausgeben Befehl

java -jar closure.jar --js hello.js --externs externs.js --js_output_file hello-compiled.js --compilation_level ADVANCED_OPTIMIZATIONS 

Ohne ADVANED_OPTIMIZATIONS funktioniert alles richtig - effektiv ein Ort der Code-Minification. Sobald ich jedoch das erweiterte Flag einfüge, erscheint die Ausgabe hello_compiled.js als leere 1-Byte-Datei. Natürlich verstehe ich irgendwo etwas falsch. Ich wäre jedem sehr dankbar, der mich hier auf die richtige Spur bringen könnte.

Antwort

1

Ich vermute, dass hello.js nur die Hallo-Funktion definiert? Wenn ja, müssen Sie hinzufügen:

hello("foo"); 

so dass etwas tatsächlich passiert. Sie können dies mit der online closure compiler ausprobieren. Der Standardcode ist:

function hello(name) { 
    alert('Hello, ' + name); 
} 
hello('New user'); 

Wenn Sie die letzte Zeile aus kommentieren und klicken Sie auf die Schaltfläche „Erweitert“ und kompilieren, das Ergebnis ist erfolgreich, aber es ist null Byte. Dies liegt daran, dass dieser Code effektiv nichts tut, also tut der Compiler das Richtige.

+0

Gut entdeckt und - jetzt, wo Sie es erwähnen - gesunder Menschenverstand. Ich habe den Compiler gebeten, zu optimieren und dann zu erwarten, redundanten Code in der kompilierten, optimierten Ausgabe zu sehen! – DroidOS

Verwandte Themen