2010-02-09 9 views
6

Possible Duplicate:
jQuery compiled with Google Closure CompilerMit Google Closure Compiler

Ich bin mit jQuery, und ich habe alle meine JS-Code in application.js Datei. Wenn ich "application.js" mit dem Google Closure-Compiler kompiliere (unter Verwendung der erweiterten Optionen), erhalte ich eine js-Datei ohne Fehler und Warnung. Allerdings kann ich die Datei in meiner Seite nicht verwenden, ich bekomme einen Fehler beim Laden der Seite, der sagt "TypeError: Ergebnis des Ausdrucks '$ (" div.tile "). D' [undefined] ist keine Funktion."

Meine Frage ist kann ich eine js-Datei kompilieren, die jQuery verwendet?

Antwort

1

Ja, wenn Sie die jQuery-Datei in Ihre andere Datei einfügen möchten.

Ja, wenn Sie stattdessen den einfachen Modus verwenden.

Ansonsten, nein.

+1

Dies wird nicht für die obige Frage arbeiten, weil er will, erweiterte Optimierungen verwenden; Sie können die jQuery-Quelle nicht über den erweiterten Optimierer ausführen. Sie können nur den einfachen Compiler verwenden und einen code_url-Parameter von jQuery angeben, der jedoch die gesamte jQuery-Komponente in die Ausgabe einbezieht. – Gabe

16

Sie können den erweiterten Modus auch verwenden, wenn Sie angeben, dass Ihre js-Datei jQuery verwendet, indem Sie eine 'extern'-Datei für jQuery angeben. Auf diese Weise wird der Closing-Compiler Ihre jQuery-Funktionsaufrufe in Ihrem Javascript nicht ändern.

java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --js_output_file application.js --externs jquery-1.4.4.externs.js 

Sie können hier einige der jQuery externen Dateien: http://code.google.com/p/closure-compiler/source/browse/trunk/contrib/externs/

8

Sie haben die Closure Compiler zu sagen, was nicht zu optimieren.

Ich mache das mit Online-Compiler (http://closure-compiler.appspot.com/home), indem Sie einen externs_url Parameter hinzufügen. Wenn Sie Ihren Code in den Online-Compiler eingeben, wird automatisch eine ähnliche Kopfzeile hinzugefügt, jedoch ohne einen externs_url-Parameter.

// ==ClosureCompiler== 
// @output_file_name default.js 
// @compilation_level ADVANCED_OPTIMIZATIONS 
// @externs_url https://closure-compiler.googlecode.com/git/contrib/externs/jquery-1.9.js 
// ==/ClosureCompiler== 

können Sie sehen, was extern Dateien auf https://code.google.com/p/closure-compiler/source/browse/contrib/externs/ derzeit verfügbar sind. Sie haben fast alle Versionen von jQuery.

Um dies mit der herunterladbaren Java-Version des Compilers zu tun, können Sie einfach den Parameter --externs_url auf dem CLI übergeben oder die externe Datei herunterladen und den Dateinamen mit --externs parameter wie in Palmerlees Antwort übergeben.

Wenn Sie daran interessiert sind, warum können Sie nicht drehen Sie einfach auf erweiterte Optimierungen durchlesen http://code.google.com/closure/compiler/docs/api-tutorial3.html

+0

Wie verwenden Sie die Präambel mit herunterladbarer Java-Version des Compilers? Ich bekomme eine Menge von "ERROR - Variable X ist nicht deklariert" und alle von ihnen als - Externes hinzufügen ist sehr umständlich. –

+0

@lambdor Ich denke, Sie müssen die - Externs Sache für die normale herunterladbare Version verwenden. Sie können auch auf die Online-Version über ihre API zugreifen, die die Präambel-Version https://developers.google.com/closure/compiler/docs/gettingstarted_api – Gabe

+0

verwendet. "Um dies mit der herunterladbaren Java-Version des Compilers zu tun, können Sie einfach die '--externs_url' Parameter auf dem Cli". Nicht wahr, leider ist "' "--externs_url" keine gültige Option " – kuporific