Pertanyaan Umum (FAQ)


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

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

Dalam mode Simple, Closure Compiler seharusnya dapat melakukan tugasnya lebih baik daripada alat lain karena menggunakan analisis seperti compiler untuk menemukan cara tambahan dalam meminimalkan ukuran kode. Misalnya, Closure Compiler dapat menyisipkan fungsi yang hanya digunakan dalam beberapa kejadian, menggunakan kembali nama variabel, dan melakukan pra-penghitungan ekspresi konstanta.

Dalam mode Lanjutan, Closure Compiler juga dapat menggunakan anotasi jenis yang Anda tambahkan untuk menemukan bug yang sulit ditemukan.

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 dengan minifier JavaScript lainnya?

Ya. Closure Compiler membaca JavaScript yang valid dan menghasilkan JavaScript yang valid, sehingga Anda dapat menerapkan Closure Compiler ke file JavaScript baik sebelum maupun setelah menjalankan file melalui minifier yang berbeda.

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

Bagaimana cara men-debug JavaScript yang dihasilkan oleh Closure Compiler?
Jika kode yang dikompilasi menampilkan error atau menunjukkan perilaku yang tidak terduga, Anda dapat menggunakan Peta Sumber untuk men-debug masalah. Peta sumber menyediakan pemetaan antara kode yang dikompilasi dan kode sumber asli sehingga alat developer browser dapat menampilkan kode sumber asli Anda, bukan kode yang dikompilasi. Untuk membuat Closure Compiler menghasilkan peta sumber, teruskan flag --create_source_map di command line. Contoh:
$ 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 Map (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 dalam sumber aslinya. Untuk mengetahui informasi selengkapnya tentang alat developer Chrome, termasuk informasi tentang peta sumber, lihat Proses debug JavaScript.
Apakah compiler membuat kompromi antara kecepatan eksekusi aplikasi dan ukuran kode download?
Ya. Compiler pengoptimalan apa pun akan membuat kompromi. Beberapa pengoptimalan ukuran akan menimbulkan sedikit overhead kecepatan. Namun, developer Closure Compiler telah berhati-hati agar tidak menimbulkan 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 terpenting dalam aplikasi web. Pengoptimalan yang mengurangi redundansi juga mempercepat waktu proses kode.
Apakah ada batasan pada 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 berjalan.
Dapatkah Compiler memproses JavaScript yang valid?
Sebagian besar. Beberapa konstruksi JavaScript, termasuk eval() dan with(), dapat membatalkan asumsi yang menjadi dasar transformasi compiler.
Seberapa banyak yang perlu saya ketahui tentang pengembangan web untuk menggunakan Closure Compiler?
Closure Compiler adalah alat untuk pengembangan JavaScript, jadi Anda harus mengetahui cara memprogram di JavaScript untuk menggunakan compiler. Namun, siapa pun yang menggunakan JavaScript dapat memanfaatkan penggunaan Closure Compiler.
Bagaimana cara kerja Closure Compiler dengan Closure Library?
Closure Compiler menyediakan pemeriksaan dan pengoptimalan khusus untuk kode yang menggunakan Closure Library. Selain itu, layanan Closure Compiler dapat menyertakan file Closure Library secara otomatis. Menemukan Cara Anda Menggunakan Closure menjelaskan sintaksis untuk mendeklarasikan bagian Closure yang Anda butuhkan. Lihat referensi API untuk mengetahui informasi tentang penggunaan Closure Library dengan API. Untuk menggunakan Closure Library dengan aplikasi Closure Compiler, Anda harus mendownload Closure Library terlebih dahulu. Dukungan untuk Closure Library diaktifkan secara default di aplikasi compiler.
Kode saya berhenti berfungsi atau Compiler menghasilkan error saat saya mengompilasi dengan ADVANCED_OPTIMIZATIONS. Mengapa?
Menggunakan mode Lanjutan biasanya memerlukan beberapa persiapan dan perubahan kode. Kompilasi Lanjutan dan Eksternal menjelaskan cara memastikan kode Anda berfungsi dengan ADVANCED_OPTIMIZATIONS.
Mengapa ada feed baris acak dalam skrip yang dikompilasi?
Compiler Closure sengaja menambahkan jeda baris 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. Dampak pada ukuran kode kecil, dan Compiler mengoptimalkan penempatan jeda baris sehingga penalti ukuran kode menjadi lebih kecil saat file di-gzip.
Saya memiliki pemberitahuan hak cipta atau teks lisensi open source yang harus muncul di kode sumber saya. Bagaimana cara mencegah Closure Compiler menghapus teks ini?
Closure Compiler mendukung tag JSDoc @license. Tambahkan tag @license ke komentar JSDoc untuk mempertahankan komentar dalam output compiler. Lihat Anotasi JavaScript untuk Closure Compiler untuk mengetahui informasi selengkapnya.