Closure Compiler Service API ile iletişim kurma

Kapatma derleyici hizmeti kullanımdan kaldırılmıştır ve kaldırılacaktır. Bunun yerine derleyiciyi yerel olarak çalıştırmayı düşünebilirsiniz.

Genel bakış

Closure Compiler service API, web tabanlı bir API üzerinden Closure Compiler JavaScript derlemesine programatik erişim sağlar. Closure Compiler Kullanıcı Arayüzü, bir web sayfasındaki basit bir form aracılığıyla derleyici hizmetini kullanmanın kolay bir yolunu sunsa da bu web sayfasından çıktıyı kopyalamak çalışmanın en etkili yolu değildir. Closure Compiler service API'yi kullanarak kendi araçlarınızı ve kendi iş akışınızı oluşturabilirsiniz.

Bu eğitim, JavaScript'i Kapatma Derleyici Hizmeti'ne gönderme ve Kapanış Derleyici çıkışını geri alma sürecinde size yol gösterir. Örnekte, yorumları ve boşlukları JavaScript'inizden alan en temel Kapatma Derleme düzeyi düzeyi kullanılmaktadır.

Bu eğitimde, JavaScript ve HTTP hakkında temel bilgiye sahip olduğunuz varsayılır. JavaScript komut dosyasını Closure Compiler hizmetine göndermek için Python komut dosyasını kullanır ancak örneği takip etmek için Python'u bilmeniz gerekmez.

API ile iletişim kurma

  1. İstek Parametrelerini Belirleme

    Closure Compiler sunucusuna HTTP POST isteklerinde bulunarak Closure Compiler hizmetiyle etkileşim kurarsınız. Her istekte en azından aşağıdaki parametreleri göndermeniz gerekir:

    js_code veya code_url

    Bu parametrenin değeri, derlemek istediğiniz JavaScript'i belirtir. Bu parametrelerden en az birini eklemeniz gerekir ve her ikisini de ekleyebilirsiniz. js_code parametresi, JavaScript gibi bir dize (alert('hello') gibi) olmalıdır. code_url parametresi, HTTP aracılığıyla kullanılabilen bir JavaScript .js dosyasının URL'sini içermelidir.

    Adlandırılmış kaynak parametrelerini js_code:path/to/filename.js formuna da ekleyebilirsiniz. Her dosya sanal bir dosya sisteminde oluşturulur ve ECMASCRIPT6 ile desteklenen import ve export ifadeleri aracılığıyla standartlaştırılmış modüller etkinleştirilir.

    compilation_level

    Bu parametrenin değeri, JavaScript'inize uygulanacak sıkıştırma ve optimizasyon derecesini gösterir. Üç olası derleme düzeyi vardır: WHITESPACE_ONLY, SIMPLE_OPTIMIZATIONS ve ADVANCED_OPTIMIZATIONS. Bu örnekte yalnızca yorumları ve boşlukları kaldıran WHITESPACE_ONLY derlemesi kullanılmaktadır.

    compilation_level parametresi varsayılan olarak SIMPLE_OPTIMIZATIONS değerine sahiptir.

    output_info

    Bu parametrenin değeri, derleyiciden istediğiniz bilgi türünü gösterir. Dört olası çıkış türü vardır: compiled_code, warnings, errors ve statistics. Bu örnekte compiled_code değeri kullanılmaktadır. Bu kod, Closure Compiler hizmetine, istekte aldığı JavaScript'in sıkıştırılmış sürümünün çıkışını bildirir.

    output_format

    Closure Compiler hizmetinin çıkışının biçimi. Üç olası çıkış biçimi vardır: text, json veya xml. Bu örnekte ham metin çıkışı sağlayan text değeri kullanılmaktadır.

    output_format parametresi varsayılan olarak text değerine sahiptir.

    Bu gerekli parametreler ve ek isteğe bağlı parametreler hakkında daha fazla bilgi edinmek için API Referansı'na göz atın.

    Bu tanıtım eğiticisindeki örnek, Closure Compiler hizmetine yalnızca bir ham JavaScript satırı gönderir. Böylece code_url yerine js_code kullanılır. WHITESPACE_ONLY compilation_level komutu kullanır, output_format ile text ham metin çıkışı isteği ve output_info türü compiled_code ister.

  2. Kapatma Derleyici Hizmeti için Yayın İsteğinde Bulunma

    Closure Compiler hizmetinden çıkış almak için, bir POST isteğinde 1. Adımda seçtiğiniz parametreleri Closure Compiler hizmeti API URL'sine gönderin. Bunu yapmanın bir yolu, Hello World of the Closure Compiler Service API gibi basit bir HTML formu kullanmaktır.

    Bununla birlikte, geliştirme sırasında böyle bir form kullanmak için çıkışı tarayıcıdan kopyalayıp bir .js dosyasına yapıştırmanız gerekir. Bunun yerine, isteği Kapanış Derleme Hizmeti'ne göndermek için küçük bir program yazarsanız Kapanış Derleyici çıkışını bir dosyaya yazabilirsiniz. Örneğin, aşağıdaki python komut dosyası isteği Closure Compiler hizmetine gönderir ve yanıtı yazar:

    #!/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()
    

    Not: Bu örneği tekrar oluşturmak için Windows kullanıcılarının Python'u yüklemesi gerekebilir. Windows'da Python yükleme ve kullanma talimatları için Python Windows SSS sayfasına bakın.

    Bu komut dosyası, kendisine iletilen JavaScript'i komut satırı bağımsız değişkeni olarak optimize eder. Yukarıdaki kodu compile.py adlı dosyaya yapıştırın, yürütülebilir olması için dosyanın izinlerini değiştirin ve aşağıdaki komutu çalıştırın:

    $ python compile.py 'alert("hello");// This comment should be stripped'
    

    Bu komut, Closure Compiler yanıtındaki sıkıştırılmış kodu yazdırır:

    alert("hello");
    

    Bu örnekte temel derleme kullanıldığı için, derleyici, yorumu kaldırmak dışında bir şey yapmaz.

    Aşağıda, bu komut dosyasıyla ilgili dikkat edilmesi gereken birkaç nokta verilmiştir:

    • Parametreler, HTTPS bağlantısında URL kodlamalı bir dize olarak istek yöntemine iletilir. urllib.urlencode çağrısından sonra, params değişkeni şu dizeyi içerir:
      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
          
      Kendi komut dosyanızı yazarsanız komut dosyası bunun gibi URL kodlamalı içerik yayınlamalıdır.
    • İsteğin her zaman application/x-www-form-urlencoded başlığı Content-type olmalıdır
  3. Sonraki Adımlar

    Daha gerçekçi bir geliştirme senaryosunda daha iyi sıkıştırma elde etmek amacıyla hizmeti nasıl kullanacağınızı öğrenmek için Dosyaları API ile Sıkıştırma bölümüne gidin.