2010-02-09 23 views
6

Possible Duplicate:
jQuery compiled with Google Closure CompilerUtilizzo di Google Chiusura compilatore

Sto usando jQuery e ho tutto il mio codice JS in application.js file. Quando compilo "application.js" con il compilatore Google Closure (utilizzando le opzioni avanzate) ottengo un file js senza errori e avvisi. Tuttavia, non riesco a utilizzare il file nella mia pagina, ricevo un errore sul caricamento della pagina che dice "TypeError: Result of expression" $ ("div.tile"). D '[undefined] non è una funzione. "

La mia domanda è posso compilare un file js che utilizza jQuery?

risposta

1

Sì, se si cura di includere il file jQuery con l'altro file.

Sì, se si utilizza la modalità semplice, invece.

Altrimenti, no.

+1

Questo non funziona per la domanda di cui sopra perché vuole usare ottimizzazioni avanzate; non è possibile eseguire la sorgente jQuery tramite l'ottimizzatore avanzato. Puoi usare solo il semplice compilatore e specificare un parametro code_url di jQuery, ma questo includerà l'intera jQuery nell'output. – Gabe

16

È anche possibile utilizzare la modalità avanzata se si specifica che il file js utilizza jQuery specificando un file 'extern' per jQuery. In questo modo il compilatore di chiusura non cambierà le chiamate della funzione jQuery all'interno del tuo javascript.

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

Potete trovare alcuni dei file esternato jQuery qui: http://code.google.com/p/closure-compiler/source/browse/trunk/contrib/externs/

8

dovete dire al compilatore Chiusura cosa non ottimizzare.

Faccio questo con il compilatore online (http://closure-compiler.appspot.com/home) aggiungendo un parametro externs_url. Quando si digita il codice nel compilatore online, verrà automaticamente aggiunta un'intestazione simile a questa, ma senza un parametro externs_url per impostazione predefinita.

// ==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== 

Si può vedere quali file esterni drives sono attualmente disponibili presso https://code.google.com/p/closure-compiler/source/browse/contrib/externs/. Hanno la maggior parte tutte le versioni di jQuery.

Per fare ciò con la versione Java scaricabile del compilatore puoi semplicemente passare il parametro --externs_url sul cli o scaricare il file extern di cui hai bisogno e passare quel nome file con il parametro --externs come nella risposta di Palmerlee.

Se siete interessati a questo che non si può semplicemente accendere ottimizzazioni avanzate di lettura attraverso http://code.google.com/closure/compiler/docs/api-tutorial3.html

+0

Come si usa il preambolo con la versione Java scaricabile del compilatore? Sto ricevendo un sacco di "ERRORE - la variabile X non è dichiarata" e aggiungendoli tutti come --externs è molto macchinosa. –

+0

@lambdor Penso che devi usare la cosa --externs per la normale versione scaricabile. Puoi anche accedere alla versione online tramite la loro API che utilizza la versione del preambolo https://developers.google.com/closure/compiler/docs/gettingstarted_api – Gabe

+0

"Per fare ciò con la versione Java scaricabile del compilatore puoi solo passare il 'parametro --externs_url' sul cli". Non è vero, purtroppo "" "--externs_url" non è un'opzione valida "" – kuporific

Problemi correlati