Berkomunikasi dengan Closure Compiler Service API

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

  1. 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 atau code_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, seperti alert('hello'). Parameter code_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 pernyataan import dan export yang didukung di ECMASCRIPT6.

    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, dan ADVANCED_OPTIMIZATIONS. Contoh ini menggunakan kompilasi WHITESPACE_ONLY, yang hanya menghapus komentar dan spasi kosong.

    Parameter compilation_level ditetapkan secara default ke nilai SIMPLE_OPTIMIZATIONS.

    output_info

    Nilai parameter ini menunjukkan jenis informasi yang Anda inginkan dari compiler. Ada empat jenis output yang memungkinkan: compiled_code, warnings, errors, dan statistics. Contoh ini menggunakan nilai compiled_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, atau xml. Contoh ini menggunakan nilai text, yang menghasilkan teks mentah.

    Parameter output_format ditetapkan secara default ke nilai text.

    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, bukan code_url. Fungsi ini menggunakan compilation_level dari WHITESPACE_ONLY, meminta output teks mentah dengan output_format dari text, dan meminta jenis output_info dari compiled_code.

  2. 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 dari application/x-www-form-urlencoded
  3. 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.