2010-02-09 29 views
6

Possible Duplicate:
jQuery compiled with Google Closure CompilerGoogle Kapatma derleyici

jQuery kullanıyorum ve application.js dosyada benim JS kodu hepsine sahip kullanma. "Application.js" yi Google Closure derleyicisiyle derlediğimde (gelişmiş seçenekleri kullanarak) hiçbir hata ve uyarı olmayan bir js dosyası alıyorum. Ancak, dosyayı sayfamda kullanamıyorum, "TypeError: expression of expression" $ ("div.tile") yazan sayfa yüklenmesinde bir hata alıyorum d '[undefined] bir işlev değil. "

Soruma jQuery kullanan bir js dosyası derleyebilir miyim?

cevap

1

Evet, jQuery dosyasını diğer dosyanıza eklemeyi düşünüyorsanız.

Evet, basit mod kullanırsanız, bunun yerine.

Aksi takdirde, hayır.

+1

aracılığıyla okumak gelişmiş optimizasyonlar açamıyorum neden ilgileniyorsanız

; jQuery kaynağını gelişmiş iyileştirici üzerinden çalıştıramazsınız. Yalnızca basit derleyiciyi kullanabilir ve jQuery'nin bir code_url parametresini belirtebilirsiniz, ancak bu, çıktıdaki jQuery'nin tamamını içerecektir. – Gabe

16

jS dosyasının jQuery için bir 'extern' dosyası belirterek jQuery kullanıyor olduğunu belirtirseniz, gelişmiş modu da kullanabilirsiniz. Bu şekilde kapatma derleyicisi jQuery işlev çağrılarınızı javascript'inizin içinde değiştirmez.

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

Burada jQuery extern bazı dosyaları bulabilirsiniz: http://code.google.com/p/closure-compiler/source/browse/trunk/contrib/externs/

8

Sen optimize etmek değil ne Kapanış derleyici söylemeliyiz.

Bunu bir externs_url paramater ekleyerek çevrimiçi derleyici (http://closure-compiler.appspot.com/home) ile yapıyorum. Çevrimiçi derleyicide kodunuzu yazdığınızda, otomatik olarak buna benzer bir üstbilgi eklenir, ancak varsayılan olarak bir externs_url param olmadan.

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

Sen extern dosyaları https://code.google.com/p/closure-compiler/source/browse/contrib/externs/ şu anda mevcuttur görebilirsiniz. JQuery'nin tüm sürümleri vardır.

Derleyicinin yüklenebilir Java sürümü ile bunu yapmak için --externs_url paramater'ı kısayoldan geçirebilir veya ihtiyacınız olan extern dosyasını karşıdan yükleyebilir ve bu dosya adını --exiles ile Palmerlee'nin cevabındaki paramater gibi iletebilirsiniz. Eğer sadece http://code.google.com/closure/compiler/docs/api-tutorial3.html o ileri optimizasyonlar kullanmak istediği için bu yukarıdaki soru için çalışmaz

+0

Başlığı, derleyicinin yüklenebilir Java sürümü ile nasıl kullanıyorsunuz? Çok fazla "ERROR - değişken X kayıt edilmiyor" alıyorum ve hepsini ekledikçe --externs çok hantal. –

+0

@lambdor Normal indirilebilir sürüm için --externs öğesini kullanmanız gerektiğini düşünüyorum. Ayrıca, çevrimiçi sürümüne https://developers.google.com/closure/compiler/docs/gettingstarted_api – Gabe

+0

başlangıç ​​sürümünü kullanan API'ları aracılığıyla da erişebilirsiniz. Bunu derleyicinin yüklenebilir Java sürümü ile yapmak için yalnızca "--externs_url" parametresi kısayolda ". Doğru değil, ne yazık ki, "' --externs_url "geçerli bir seçenek değil" " – kuporific