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
- İ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
veyacode_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 veECMASCRIPT6
ile desteklenenimport
veexport
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
veADVANCED_OPTIMIZATIONS
. Bu örnekte yalnızca yorumları ve boşlukları kaldıranWHITESPACE_ONLY
derlemesi kullanılmaktadır.compilation_level
parametresi varsayılan olarakSIMPLE_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
vestatistics
. Bu örnektecompiled_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
veyaxml
. Bu örnekte ham metin çıkışı sağlayantext
değeri kullanılmaktadır.output_format
parametresi varsayılan olaraktext
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
yerinejs_code
kullanılır.WHITESPACE_ONLY
compilation_level
komutu kullanır,output_format
iletext
ham metin çıkışı isteği veoutput_info
türücompiled_code
ister. -
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
-
Parametreler, HTTPS bağlantısında URL kodlamalı bir dize olarak istek yöntemine iletilir.
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.