Layanan compiler Closure tidak digunakan lagi, dan akan dihapus. Sebaiknya jalankan compiler secara lokal.
Ringkasan
Closure Compiler service API menyediakan akses terprogram ke kompilasi Closure Compiler melalui API berbasis Web. Meskipun Closure Compiler UI memberi Anda cara mudah untuk menggunakan layanan compiler melalui formulir sederhana di halaman web, menyalin output dari halaman web ini bukanlah cara yang paling efisien untuk bekerja. Dengan Closure Compiler service API, Anda mendapatkan fleksibilitas untuk mem-build alat sendiri dan membuat alur kerja Anda sendiri.
Tutorial ini akan memandu Anda melalui proses pengiriman JavaScript ke layanan Closure Compiler dan mendapatkan kembali output Closure Compiler. Contoh ini menggunakan tingkat paling dasar dari kompilasi Closure Compiler, yang hanya menghapus komentar dan spasi kosong dari JavaScript Anda.
Tutorial ini mengasumsikan bahwa Anda telah memiliki pengetahuan dasar tentang JavaScript dan HTTP. Meskipun skrip ini menggunakan skrip Python untuk mengirimkan JavaScript ke layanan Closure Compiler, Anda tidak perlu mengetahui Python untuk mengikuti contoh.
Cara Melakukan Komputasi dengan API
- Menentukan Parameter Permintaan
Anda berinteraksi dengan layanan Closure Compiler dengan membuat permintaan HTTP POST ke server Closure Compiler. Untuk setiap permintaan, Anda harus mengirimkan setidaknya parameter berikut:
js_code
ataucode_url
-
Nilai parameter ini menunjukkan JavaScript yang ingin Anda kompilasi. Anda harus menyertakan setidaknya salah satu parameter ini, dan Anda dapat menyertakan keduanya. Parameter
js_code
harus berupa string yang berisi JavaScript, sepertialert('hello')
. Parametercode_url
harus berisi URL file JavaScript.js
yang tersedia melalui HTTP.Anda juga dapat menyertakan parameter sumber bernama dalam format
js_code:path/to/filename.js
. Setiap file akan dibuat dalam sistem file virtual, yang memungkinkan modul standar melalui pernyataanimport
danexport
yang didukung diECMASCRIPT6
. compilation_level
-
Nilai parameter ini menunjukkan tingkat kompresi dan pengoptimalan yang akan diterapkan ke JavaScript Anda. Ada tiga kemungkinan level kompilasi:
WHITESPACE_ONLY
,SIMPLE_OPTIMIZATIONS
, danADVANCED_OPTIMIZATIONS
. Contoh ini menggunakan kompilasiWHITESPACE_ONLY
, yang hanya menghapus komentar dan spasi kosong.Parameter
compilation_level
ditetapkan secara default ke nilaiSIMPLE_OPTIMIZATIONS
. output_info
-
Nilai parameter ini menunjukkan jenis informasi yang Anda inginkan dari compiler. Ada empat jenis output yang memungkinkan:
compiled_code
,warnings
,errors
, danstatistics
. Contoh ini menggunakan nilaicompiled_code
, yang memberi tahu layanan Closure Compiler untuk menghasilkan versi JavaScript terkompresi yang diterimanya dalam permintaan. output_format
-
Format untuk output layanan Compiler Closure. Ada tiga kemungkinan format output:
text
,json
, atauxml
. Contoh ini menggunakan nilaitext
, yang menghasilkan teks mentah.Parameter
output_format
ditetapkan secara default ke nilaitext
.
Untuk mengetahui informasi lebih lanjut tentang parameter wajib ini dan parameter opsional tambahan, lihat Referensi API.
Contoh dalam tutorial pengantar ini hanya mengirimkan satu baris JavaScript mentah ke layanan Closure Compiler, sehingga menggunakan
js_code
, bukancode_url
. Fungsi ini menggunakancompilation_level
dariWHITESPACE_ONLY
, meminta output teks mentah denganoutput_format
daritext
, dan meminta jenisoutput_info
daricompiled_code
. -
Membuat Permintaan Postingan ke Layanan Closure Compiler
Untuk mendapatkan output dari layanan Closure Compiler, kirim parameter yang Anda pilih pada Langkah 1 dalam permintaan POST ke URL API layanan Closure Compiler. Salah satu cara untuk melakukannya adalah dengan formulir HTML sederhana seperti yang ada di Hello World of the Closure Compiler Service API.
Namun, untuk menggunakan formulir seperti ini selama pengembangan, Anda harus menyalin output dari browser dan menempelkannya ke file .js. Namun, jika Anda menulis program kecil untuk mengirim permintaan ke layanan Closure Compiler, Anda dapat menulis output Closure Compiler langsung ke file. Misalnya, skrip python berikut mengirimkan permintaan ke layanan Closure Compiler dan menulis respons:
#!/usr/bin/python2.4 import httplib, urllib, sys # Define the parameters for the POST request and encode them in # a URL-safe format. params = urllib.urlencode([ ('js_code', sys.argv[1]), ('compilation_level', 'WHITESPACE_ONLY'), ('output_format', 'text'), ('output_info', 'compiled_code'), ]) # Always use the following value for the Content-type header. 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()
Catatan: Untuk mereproduksi contoh ini, pengguna Windows mungkin perlu menginstal Python. Lihat FAQ Python Windows untuk mendapatkan petunjuk tentang cara menginstal dan menggunakan Python di bawah Windows.
Skrip ini mengoptimalkan JavaScript yang diteruskan sebagai argumen command line. Tempel kode di atas ke dalam file yang disebut
compile.py
, ubah izin file untuk membuatnya dapat dieksekusi, dan jalankan perintah berikut:$ python compile.py 'alert("hello");// This comment should be stripped'
Perintah ini mencetak kode yang dikompresi dari respons Closure Compiler:
alert("hello");
Karena contoh ini menggunakan kompilasi dasar, compiler tidak melakukan apa pun selain menghapus komentar.
Berikut beberapa hal yang perlu diperhatikan tentang skrip ini:
-
Parameter diteruskan ke metode permintaan
HTTPSConnection sebagai string berenkode URL. Setelah panggilan ke
urllib.urlencode
, variabel parameter berisi string berikut:js_code=alert%28%22hello%22%29%3B%2F%2F+This+comment+should+be+stripped&output_info=compiled_code&out=text&compilation_level=WHITESPACE_ONLY
Jika Anda menulis skrip sendiri, skrip tersebut harus memposting konten berenkode URL seperti ini. - Permintaan harus selalu memiliki header
Content-type
dariapplication/x-www-form-urlencoded
-
Parameter diteruskan ke metode permintaan
HTTPSConnection sebagai string berenkode URL. Setelah panggilan ke
Langkah Berikutnya
Untuk mempelajari cara menggunakan layanan agar dapat melakukan kompresi yang lebih baik dalam skenario pengembangan yang lebih realistis, lanjutkan ke Mengompresi File dengan API.