Closure Compiler, boşluk ve yorumların basitçe kaldırılmasından agresif kod dönüşümlerine kadar derleme için üç seviye arasından seçim yapmanıza olanak tanır.
WHITESPACE_ONLY
WHITESPACE_ONLY
derleme düzeyi, kodunuzdaki yorumları, satır sonlarını, gereksiz boşlukları, parantez ve noktalı virgül gibi gereksiz noktalama işaretlerini ve diğer boşlukları kaldırır. Çıkış JavaScript'i, kaynak JavaScript ile işlevsel olarak aynıdır.
İstenen çıkış dili modu, giriş dili modundan farklıysa dil özelliklerinin derlenmesi yine de gerçekleşir.
İşaretler ve Seçenekler bölümünde --language_in
ve --language_out
simgelerine bakın.
Bu derleme düzeyi, üç düzey arasında en az sıkıştırma sağlayan düzeydir.
SIMPLE_OPTIMIZATIONS
SIMPLE_OPTIMIZATIONS
derleme düzeyi, WHITESPACE_ONLY
ile aynı boşluk ve yorum kaldırma işlemlerini gerçekleştirir. Ancak yerel değişkenleri ve işlev parametrelerini daha kısa adlarla yeniden adlandırma da dahil olmak üzere ifadeler ve işlevler içinde optimizasyonlar da yapar. Değişkenleri daha kısa adlarla yeniden adlandırmak kodu önemli ölçüde küçültür. SIMPLE_OPTIMIZATIONS
düzeyi yalnızca işlevlere özgü sembolleri yeniden adlandırdığı için derlenmiş JavaScript ile diğer JavaScript arasındaki etkileşime müdahale etmez.
SIMPLE_OPTIMIZATIONS
ile derleme, kodun dize adlarını kullanarak yerel değişkenlere erişmemesi (örneğin, eval()
ifadelerini kullanarak veya işlevlerde toString'i çağırarak) koşuluyla, söz dizimi açısından geçerli JavaScript'in işlevselliğini her zaman korur.
SIMPLE_OPTIMIZATIONS
, varsayılan derleme düzeyidir.
ADVANCED_OPTIMIZATIONS
ADVANCED_OPTIMIZATIONS
derleme düzeyi, SIMPLE_OPTIMIZATIONS
ile aynı dönüşümleri gerçekleştirir ancak üç düzeyin en yüksek sıkıştırmasını elde etmek için çeşitli daha agresif global dönüşümler ekler. ADVANCED_OPTIMIZATIONS
seviyesi, JavaScript'i diğer araçlarla mümkün olandan çok daha iyi şekilde sıkıştırır.
Bu aşırı sıkıştırmayı etkinleştirmek için ADVANCED_OPTIMIZATIONS
, derlenmiş kodla ilgili güçlü varsayımlarda bulunur. Kodunuz bu varsayımlara uymuyorsa ADVANCED_OPTIMIZATIONS
çalışmayan bir kod oluşturur.
Örneğin, ADVANCED_OPTIMIZATIONS
ile derlenen kod, birlikte çalışabilirliği sağlamak için özel adımlar atmadığınız sürece derlenmemiş kodla çalışmayabilir. Kodunuzda referans verilen harici işlevleri ve özellikleri işaretlemezseniz Closure Compiler, kodunuzdaki referansları uygunsuz şekilde yeniden adlandırır. Bu durum, kodunuzdaki adlar ile harici koddaki adlar arasında uyuşmazlıklara neden olur.
Kodunuzu ADVANCED_OPTIMIZATIONS
için hazırlama hakkında daha fazla bilgi edinmek istiyorsanız Advanced Compilation and Externs (Gelişmiş Derleme ve Harici Dosyalar) başlıklı makaleyi inceleyin.
ADVANCED_OPTIMIZATIONS
dönüşümleri şunlardır:
- daha agresif yeniden adlandırma:
SIMPLE_OPTIMIZATIONS
ile derleme yalnızca işlevlerdeki parametreleri ve değişkenleri yeniden adlandırır.ADVANCED_OPTIMIZATIONS
ayrıca global değişkenleri, işlev adlarını ve özellikleri de yeniden adlandırır. - Ölü kod kaldırma:
ADVANCED_OPTIMIZATIONS
ile derleme, kesin olarak ulaşılamayan kodu kaldırır. Bu özellik, özellikle büyük kitaplıklarla birlikte kullanıldığında faydalıdır. Büyük bir kitaplık dosyasından yalnızca birkaç işlev kullanıyorsanız derleyici, bu işlevler dışındaki her şeyi çıkışından kaldırabilir. - global inlining:
ADVANCED_OPTIMIZATIONS
ile derleme, bazı işlev çağrılarını işlevin gövdesiyle değiştirir. Bu dönüşüm "satır içi" olarak bilinir. Derleyici, yalnızca satır içi işlemin güvenli olduğunu ve yer tasarrufu sağladığını belirlediğinde işlevleri satır içine yerleştirir. Derleyici, güvenli bir şekilde yapabileceğini belirlediğindeADVANCED_OPTIMIZATIONS
ile derleme, sabitleri ve bazı değişkenleri de satır içi yapar.
Derleme düzeyini ayarlama
Closure Compiler uygulamasında derleme düzeyini ayarlamak için aşağıdaki komutta olduğu gibi --compilation_level
komut satırı işaretini WHITESPACE_ONLY
, SIMPLE
veya ADVANCED
değeriyle birlikte ekleyin:
java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --js hello.js