Derleme Derleyici Derlemesi Seviyeleri

Closure Compiler, boşlukların ve yorumların kolayca kaldırılmasından agresif kod dönüşümlerine kadar üç derleme düzeyi arasından seçim yapmanıza olanak tanır.

YALNIZCA BEYAZ ALANDA

WHITESPACE_ONLY derleme düzeyi, kodunuzdan yorumları ve satır sonlarını, gereksiz boşlukları, fazladan noktalama işaretlerini (ör. parantez ve noktalı virgül) ve diğer boşlukları kaldırır. Çıkış JavaScript'i, işlevsel olarak kaynak JavaScript ile aynıdır.

İstenen çıkış dil modu, giriş dili modundan farklıysa dil özelliklerinin transkripti gösterilmeye devam eder. İşaretler ve Seçenekler'deki --language_in ve --language_out bölümlerine bakın.

Bu derleme düzeyi, üç düzeyin en az sıkıştırılmasını sağlar.

SIMPLE_OPTİMİZASYONLAR

SIMPLE_OPTIMIZATIONS derleme düzeyi, WHITESPACE_ONLY ile aynı boşluk ve yorum kaldırma işlemlerini gerçekleştirir ancak ayrıca ifadeler ve işlevler içinde optimizasyonlar da yapar. Buna, yerel değişkenleri ve işlev parametrelerini daha kısa adlar olarak yeniden adlandırmak da dahildir. Değişkenlerin daha kısa adlara sahip olması, kodu önemli ölçüde kısaltır. SIMPLE_OPTIMIZATIONS düzeyi, yalnızca işlevlerde yerel olan simgeleri yeniden adlandırdığından, derlenen JavaScript ile diğer JavaScript arasındaki etkileşimi engellemez.

Kodun dize adlarını kullanarak (örneğin, eval() ifadelerini kullanarak veya işlevlerde toString'i çağırarak) yerel değişkenlere erişmemesi koşuluyla, SIMPLE_OPTIMIZATIONS ile derleme, söz dizimsel olarak geçerli JavaScript'in işlevlerini her zaman korur.

SIMPLE_OPTIMIZATIONS, varsayılan derleme düzeyidir.

GELİŞMİŞ_OPTİMİZASYONLAR

ADVANCED_OPTIMIZATIONS derleme seviyesi, SIMPLE_OPTIMIZATIONS ile aynı dönüşümleri gerçekleştirir ancak üç seviyenin de en yüksek şekilde sıkıştırılmasını sağlamak için daha agresif global dönüşümler ekler. ADVANCED_OPTIMIZATIONS düzeyi, JavaScript'i diğer araçlarla mümkün olandan çok daha fazla sıkıştırır.

Bu aşırı sıkıştırmayı etkinleştirmek için ADVANCED_OPTIMIZATIONS, derlenen kodla ilgili güçlü varsayımlar oluşturur. Kodunuz bu varsayımlara uymuyorsa ADVANCED_OPTIMIZATIONS çalışmayan kod oluşturur.

Örneğin, birlikte çalışabilirlik için özel adımlar gerçekleştirmediğiniz sürece ADVANCED_OPTIMIZATIONS ile derlenen kod derlenmemiş kodla çalışmayabilir. Kodunuzda başvurulan harici işlevleri ve özellikleri işaretlemezseniz Closure Compiler, kodunuzdaki referansları uygunsuz bir şekilde yeniden adlandırıp kodunuzdaki adlar ile harici koddaki adlar arasında uyuşmazlıklara neden olur.

Kodunuzu ADVANCED_OPTIMIZATIONS için nasıl hazırlayacağınız hakkında daha fazla bilgi edinmek için Gelişmiş Derleme ve Extex'leri okuyun.

ADVANCED_OPTIMIZATIONS dönüşümleri şunları içerir:

  • daha agresif bir 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 yeniden adlandırır.

  • ölü kodu kaldırma:

    ADVANCED_OPTIMIZATIONS ile derleme, erişilemediği kanıtlanmış kodu kaldırır. Bu, özellikle büyük kitaplıklarla birlikte kullanıldığında kullanışlıdır. Büyük bir kitaplık dosyasından yalnızca birkaç işlev kullanırsanız derleyici, bu işlevler dışındaki her şeyi çıkışından kaldırabilir.

  • global satır içi:

    ADVANCED_OPTIMIZATIONS ile derleme, bazı işlev çağrılarını işlevin gövdesiyle değiştirir. Bu dönüştürme, "satır içi" olarak bilinir. Derleyici, satır içi işlevin yalnızca satır içi reklamın güvenli olduğunu belirlediğinde ve alan tasarrufu sağladığında çalışır. Derleyici, ADVANCED_OPTIMIZATIONS ile derleme yaparken aynı zamanda sabit değerleri ve bazı değişkenleri de satır içine alır.

Derleme Düzeyini Ayarlama

Closure Compiler hizmeti kullanıcı arayüzü, service API ve uygulamanın compilation_level ayarını yapmak için farklı yöntemleri vardır.

Kapatma Derleyici Hizmeti kullanıcı arayüzünde

Kapatma Derleyici Hizmeti kullanıcı arayüzünde derleme düzeyini ayarlamak için arayüzün Optimizasyon bölümündeki radyo düğmelerini tıklayın.

Kullanıcı arayüzü ekran görüntüsü

Closure Compiler hizmet API'sinde

Derleme düzeyini Closure Compiler hizmet API'sinde ayarlamak için aşağıdaki python programında olduğu gibi compilation_level adlı ve WHITESPACE_ONLY, SIMPLE_OPTIMIZATIONS veya ADVANCED_OPTIMIZATIONS değerine sahip bir istek parametresi ekleyin:

#!/usr/bin/python2.4

import httplib, urllib, sys

params = urllib.urlencode([
    ('code_url', sys.argv[1]),
    ('compilation_level', 'ADVANCED_OPTIMIZATIONS'),
    ('output_format', 'text'),
    ('output_info', 'compiled_code'),
  ])

headers = { "Content-type": "application/x-www-form-urlencoded" }
conn = httplib.HTTPSConnection('closure-compiler.appspot.com')
conn.request('POST', '/compile', params, headers)
response = conn.getresponse()
data = response.read()
print data
conn.close()

Kapatma Derleyici Uygulaması'nda

Closure Compiler uygulamasında derleme düzeyini ayarlamak için aşağıdaki komutta olduğu gibi --compilation_level, WHITESPACE_ONLY, SIMPLE veya ADVANCED değerine sahip komut satırı işaretini ekleyin:

java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --js hello.js