Pertanyaan Umum (FAQ)


Apa itu Closure Compiler? Mengapa saya harus menggunakannya?
Closure Compiler adalah alat untuk membuat download JavaScript dan berjalan lebih cepat. Anda dapat menggunakan Closure Compiler untuk mengurangi ukuran file JavaScript dan membuatnya lebih efisien.
Apa perbedaan Closure Compiler dengan kompresor JavaScript lain yang ada?

Umumnya, Closure Compiler harus memenuhi atau melampaui kompresi alat minifikasi kode lainnya, dan meningkatkan waktu download aplikasi web Anda. Selain itu, Closure Compiler dapat membantu Anda menemukan error sintaksis selama pengembangan (bukan selama pengujian) dan mengidentifikasi pola kode yang berpotensi berisi bug.

Dalam mode Sederhana, Closure Compiler harus dapat melakukan lebih baik daripada alat lainnya karena menggunakan analisis seperti compiler untuk menemukan cara tambahan guna meminimalkan ukuran kode. Misalnya, Closure Compiler dapat menjalankan fungsi inline yang hanya digunakan dalam beberapa kejadian, menggunakan kembali nama variabel, dan ekspresi konstan prakomputasi.

Dalam mode Lanjutan, Closure Compiler juga dapat menggunakan anotasi jenis yang ditambahkan untuk menemukan bug yang sulit dikenali.

Dapatkah Closure Compiler mengompilasi JavaScript yang disematkan dalam HTML?
Tidak. Closure Compiler hanya berfungsi pada file yang hanya berisi JavaScript.
Dapatkah saya menggunakan Closure Compiler bersama minifier JavaScript lainnya?

Ya. Closure Compiler membaca dalam JavaScript yang valid dan menghasilkan JavaScript yang valid, sehingga Anda dapat menerapkan Closure Compiler ke file JavaScript sebelum atau setelah menjalankan file melalui minifier lain.

Ingat bahwa Closure Compiler dan minifier lainnya mungkin memiliki ekspektasi tentang kode masuk. Misalnya, minifier yang menghapus komentar dapat menghapus lisensi atau informasi anotasi yang diperlukan oleh alat lain.

Bagaimana cara men-debug JavaScript yang dihasilkan oleh Closure Compiler?
Jika kode yang dikompilasi melempar error atau menunjukkan perilaku yang tidak terduga, Anda dapat menggunakan Source Maps untuk men-debug masalah tersebut. Peta sumber menyediakan pemetaan antara kode yang dikompilasi dan kode sumber asli, sehingga alat developer browser dapat menampilkan kode sumber asli, bukan kode yang dikompilasi. Agar Closure Compiler menghasilkan peta sumber, teruskan flag --create_source_map pada command line. Misalnya:
$ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js
Kemudian, jika Anda menggunakan browser yang mendukung Source Maps (seperti Chrome atau Firefox), Anda dapat menyetel titik henti sementara seperti yang Anda lakukan untuk kode yang tidak dikompilasi, dan alat developer browser akan menampilkan baris kode yang sesuai di sumber asli. Untuk informasi selengkapnya tentang alat developer Chrome, termasuk informasi tentang peta sumber, lihat Men-debug JavaScript.
Apakah compiler membuat kompromi antara kecepatan eksekusi aplikasi dan ukuran kode download?
Ya. Setiap compiler yang mengoptimalkan kompromi. Beberapa pengoptimalan ukuran memperkenalkan overhead kecepatan kecil. Namun, developer Closure Compiler telah berhati-hati agar tidak memperkenalkan runtime tambahan yang signifikan. Beberapa pengoptimalan compiler bahkan mengurangi runtime (lihat pertanyaan berikutnya).
Apakah compiler mengoptimalkan kecepatan?
Dalam sebagian besar kasus, kode yang lebih kecil adalah kode yang lebih cepat, karena waktu download biasanya merupakan faktor kecepatan yang paling penting dalam aplikasi web. Pengoptimalan yang mengurangi redundansi juga mempercepat waktu eksekusi kode.
Apakah ada batasan ukuran file yang dapat dikompilasi?
Layanan web kompilasi memiliki ukuran file maksimum, tetapi aplikasi compiler mandiri tidak.
Apakah Closure Compiler tersedia untuk semua platform?
Compiler ditulis dalam Java, sehingga dapat berjalan di mana pun Java dijalankan.
Dapatkah Compiler memproses JavaScript hukum?
Sebagian besar paham. Beberapa konstruksi JavaScript, termasuk eval() dan with(), dapat membatalkan asumsi yang menjadi dasar transformasi compiler.
Berapa banyak yang perlu saya ketahui tentang pengembangan web untuk menggunakan Closure Compiler?
Closure Compiler adalah alat untuk pengembangan JavaScript, sehingga Anda perlu mengetahui cara memprogram di JavaScript untuk menggunakan compiler. Tetapi siapa saja yang menggunakan JavaScript dapat memperoleh manfaat dari penggunaan Closure Compiler.
Bagaimana cara kerja Closure Compiler dengan Library Closure?
Closure Compiler menyediakan pemeriksaan dan pengoptimalan khusus untuk kode yang menggunakan Closure Library. Selain itu, layanan Compiler Closure dapat otomatis menyertakan file Library Closure. Memahami Closure menjelaskan sintaksis untuk mendeklarasikan bagian dari Closure yang Anda butuhkan. Lihat referensi API untuk mengetahui informasi tentang cara menggunakan Closure Library dengan API. Untuk menggunakan Closure Library dengan aplikasi Closure Compiler, Anda harus mendownload Library Closure terlebih dahulu. Dukungan untuk Closure Library diaktifkan di aplikasi compiler secara default.
Kode saya berhenti berfungsi atau Compiler menghasilkan error saat saya mengompilasi dengan ADVANCED_OPTIMIZATIONS. Mengapa?
Penggunaan Mode lanjutan biasanya memerlukan beberapa persiapan dan perubahan kode. Kompilasi Lanjutan dan Externs menjelaskan cara memastikan kode Anda berfungsi dengan ADVANCED_OPTIMIZATIONS.
Mengapa ada feed baris acak dalam skrip yang dikompilasi?
Closure Compiler sengaja menambahkan baris baru setiap 500 karakter atau lebih. Firewall dan proxy terkadang merusak atau mengabaikan file JavaScript besar dengan baris yang sangat panjang. Menambahkan jeda baris setiap 500 karakter akan mencegah masalah ini. Menghapus jeda baris tidak memengaruhi semantik skrip. Dampaknya pada ukuran kode kecil, dan Compiler mengoptimalkan penempatan jeda baris sehingga penalti ukuran kode bahkan lebih kecil ketika file di-zip.
Saya memiliki pemberitahuan hak cipta atau teks lisensi open source yang harus muncul dalam kode sumber. Bagaimana cara mencegah Closure Compiler menghapus teks ini?
Closure Compiler mendukung tag @license JSDoc. Tambahkan tag @license ke komentar JSDoc apa pun untuk mempertahankan komentar di output compiler. Lihat Menganotasi JavaScript untuk Closure Compiler untuk informasi selengkapnya.