Dengan Closure Compiler, Anda dapat memilih dari tiga level kompilasi, mulai dari penghapusan spasi kosong dan komentar yang sederhana hingga transformasi kode yang agresif.
MANFAATKAN_HANYA
Level kompilasi WHITESPACE_ONLY
menghapus komentar dari kode Anda dan juga menghapus jeda baris, spasi yang tidak perlu, tanda baca yang tidak relevan (seperti tanda kurung dan titik koma), dan spasi kosong lainnya. JavaScript output secara fungsional identik dengan JavaScript sumber.
Transpilasi fitur bahasa akan tetap terjadi jika mode bahasa output yang diminta berbeda dengan mode bahasa input.
Lihat --language_in
dan --language_out
di
Flag dan Options.
Level kompilasi ini memberikan kompresi paling sedikit dari ketiga level tersebut.
PENGOPTIMALAN_SEDERHANA
Level kompilasi SIMPLE_OPTIMIZATIONS
menjalankan
spasi kosong dan penghapusan komentar yang sama
seperti WHITESPACE_ONLY
, tetapi juga melakukan pengoptimalan
dalam ekspresi dan fungsi, termasuk mengganti nama variabel
lokal dan parameter fungsi menjadi nama yang lebih pendek. Mengganti nama variabel menjadi nama yang lebih pendek membuat kode menjadi lebih kecil secara signifikan. Karena level SIMPLE_OPTIMIZATIONS
hanya mengganti nama simbol yang bersifat lokal untuk fungsi, level ini tidak mengganggu interaksi antara JavaScript yang dikompilasi dan JavaScript lainnya.
Kompilasi dengan SIMPLE_OPTIMIZATIONS
selalu mempertahankan
fungsi JavaScript yang valid secara sintaksis, dengan ketentuan bahwa
kode tidak mengakses variabel lokal menggunakan nama string (misalnya, menggunakan pernyataan eval()
, atau dengan memanggil
toString pada fungsi).
SIMPLE_OPTIMIZATIONS
adalah tingkat kompilasi default.
PENGOPTIMALAN_KEMBALI
Level kompilasi ADVANCED_OPTIMIZATIONS
menjalankan
transformasi yang sama seperti SIMPLE_OPTIMIZATIONS
, tetapi
menambahkan berbagai transformasi global yang lebih agresif untuk mencapai
kompresi tertinggi dari ketiga
level. Level ADVANCED_OPTIMIZATIONS
mengompresi
JavaScript dengan lebih baik dari alat lain.
Untuk mengaktifkan kompresi ekstrem ini, ADVANCED_OPTIMIZATIONS
membuat asumsi yang kuat tentang kode yang dikompilasi. Jika kode Anda tidak sesuai dengan asumsi tersebut, ADVANCED_OPTIMIZATIONS
akan menghasilkan kode yang tidak berjalan.
Misalnya, kode yang dikompilasi
dengan ADVANCED_OPTIMIZATIONS
mungkin tidak berfungsi dengan
kode yang tidak dikompilasi kecuali Anda mengambil langkah khusus untuk memastikan
interoperabilitas. Jika Anda tidak menandai fungsi dan properti eksternal yang dirujuk dalam kode, Closure Compiler akan mengganti nama referensi dengan tidak tepat dalam kode Anda, yang menyebabkan ketidakcocokan antara nama dalam kode Anda dan kode eksternal.
Guna mempelajari lebih lanjut cara menyiapkan kode untuk ADVANCED_OPTIMIZATIONS
, baca Kompilasi Lanjutan dan Eksternal.
Transformasi ADVANCED_OPTIMIZATIONS
mencakup:
- penggantian nama yang lebih agresif:
Kompilasi dengan
SIMPLE_OPTIMIZATIONS
hanya mengganti nama parameter dan variabel dalam fungsi.ADVANCED_OPTIMIZATIONS
juga mengganti nama variabel, nama fungsi, dan properti global. - penghapusan kode mati:
Kompilasi dengan
ADVANCED_OPTIMIZATIONS
menghapus kode yang tampaknya tidak dapat dijangkau. Ini sangat berguna khususnya jika dikombinasikan dengan library besar. Jika Anda hanya menggunakan beberapa fungsi dari file library besar, compiler dapat menghapus semuanya kecuali fungsi tersebut dari output-nya. - penyisipan global:
Kompilasi dengan
ADVANCED_OPTIMIZATIONS
menggantikan beberapa panggilan fungsi dengan isi fungsi. Transformasi ini dikenal sebagai "penyelarasan". Compiler hanya inline fungsi jika menentukan bahwa inline aman dan menghemat ruang. Kompilasi denganADVANCED_OPTIMIZATIONS
juga inline konstanta dan beberapa variabel saat compiler menentukan bahwa konstantanya dapat dilakukan dengan aman.
Cara Menetapkan Level Kompilasi
UI layanan Closure Compiler, API layanan, dan aplikasi memiliki
metode yang berbeda untuk menyetel
compilation_level
.
Di UI layanan Closure Compiler
Untuk menetapkan tingkat kompilasi di UI layanan Closure Compiler, klik tombol pilihan di bagian Pengoptimalan pada antarmuka.
Di Closure Compiler service API
Untuk menetapkan level kompilasi di Closure Compiler service API,
sertakan parameter permintaan bernama compilation_level
dengan nilai
WHITESPACE_ONLY
, SIMPLE_OPTIMIZATIONS
,
atau ADVANCED_OPTIMIZATIONS
, seperti dalam program
python berikut:
#!/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()
Di aplikasi Closure Compiler
Untuk menetapkan level kompilasi dalam aplikasi Closure Compiler,
sertakan flag command line --compilation_level
dengan
nilai
WHITESPACE_ONLY
, SIMPLE
,
atau ADVANCED
, seperti dalam perintah berikut:
java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --js hello.js