क्लोज़र कंपाइलर की सेवा बंद कर दी गई है और इसे हटा दिया जाएगा. इसके बजाय, कंपाइलर को स्थानीय तौर पर चलाएं.
खास जानकारी
Closure Compiler सेवा API, वेब-आधारित एपीआई के ज़रिए Closure कंपाइलर JavaScript संकलन का प्रोग्राम-संबंधी ऐक्सेस देता है. Closure कंपाइलर UI की मदद से, वेब पेज पर मौजूद आसान फ़ॉर्म से कंपाइलर सेवा का आसानी से इस्तेमाल किया जा सकता है. हालांकि, इस वेब पेज से आउटपुट कॉपी करने से आपको ज़्यादा मदद मिलेगी. Closure Compiler API (एपीआई) की मदद से आपको अपने टूल बनाने और अपने काम के तरीके खुद बनाने की सुविधा मिलती है.
इस ट्यूटोरियल में, क्लोज़र कंपाइलर सेवा में JavaScript भेजने और क्लोज़र कंपाइलर आउटपुट को वापस पाने की प्रोसेस के बारे में बताया गया है. इस उदाहरण में क्लोज़र कंपाइलर के सबसे बुनियादी लेवल का इस्तेमाल किया गया है. इसमें, आपके JavaScript से टिप्पणियां और खाली सफ़ेद जगह को हटाया जाता है.
इस ट्यूटोरियल में यह माना जाता है कि आपको JavaScript और एचटीटीपी की बुनियादी जानकारी है. हालांकि, यह Closure कंपाइलर सेवा में JavaScript को सबमिट करने के लिए Python स्क्रिप्ट का उपयोग करता है, लेकिन उदाहरण का पालन करने के लिए आपको Python की जानकारी होना ज़रूरी नहीं है.
एपीआई से कनेक्ट करने का तरीका
- अनुरोध के पैरामीटर तय करना
क्लोज़र कंपाइलर सर्वर पर एचटीटीपी POST के अनुरोध करके, आप क्लोज़र कंपाइलर सेवा से इंटरैक्ट करते हैं. हर अनुरोध के साथ आपको कम से कम ये पैरामीटर भेजने होंगे:
js_code
याcode_url
-
इस पैरामीटर की वैल्यू, उस JavaScript के बारे में बताती है जिसे आपको कंपाइल करना है. आपको इनमें से कम से कम एक पैरामीटर शामिल करना होगा और दोनों को शामिल किया जा सकता है.
js_code
पैरामीटर एक स्ट्रिंग होनी चाहिए, जिसमें JavaScript शामिल हो, जैसे किalert('hello')
.code_url
पैरामीटर में, उस JavaScript.js
फ़ाइल का यूआरएल होना चाहिए जो एचटीटीपी के ज़रिए उपलब्ध हो.js_code:path/to/filename.js
फ़ॉर्म में, नाम वाले पैरामीटर भी शामिल किए जा सकते हैं. हर फ़ाइल एक वर्चुअल फ़ाइल सिस्टम में बनाई जाएगी. यहECMASCRIPT6
में काम करने वालेimport
औरexport
स्टेटमेंट के ज़रिए, स्टैंडर्ड मॉड्यूल चालू करेगी. compilation_level
-
इस पैरामीटर की वैल्यू, आपकी JavaScript पर लागू होने वाले कंप्रेशन और ऑप्टिमाइज़ेशन के लेवल को दिखाती है. डेटा इकट्ठा करने के तीन संभावित तरीके हैं:
WHITESPACE_ONLY
,SIMPLE_OPTIMIZATIONS
, औरADVANCED_OPTIMIZATIONS
. इस उदाहरण में,WHITESPACE_ONLY
कंपाइलेशन का इस्तेमाल किया गया है. इसमें, टिप्पणियां और खाली सफ़ेद जगह को अलग किया गया है.compilation_level
पैरामीटर, डिफ़ॉल्ट रूप सेSIMPLE_OPTIMIZATIONS
वैल्यू होता है. output_info
-
इस पैरामीटर की वैल्यू से यह पता चलता है कि कंपाइलर से आपको किस तरह की जानकारी चाहिए. आउटपुट चार तरह के हो सकते हैं:
compiled_code
,warnings
,errors
, औरstatistics
. इस उदाहरण में, वैल्यूcompiled_code
का इस्तेमाल किया गया है. यह क्लोज़र कंपाइलर सेवा को अनुरोध में मिले JavaScript के कंप्रेस किए गए वर्शन को आउटपुट करने के लिए बताता है. output_format
-
क्लोज़र कंपाइलर सेवा के आउटपुट का फ़ॉर्मैट. तीन तरह के आउटपुट फ़ॉर्मैट इस्तेमाल किए जा सकते हैं:
text
,json
याxml
. इस उदाहरण मेंtext
वैल्यू का इस्तेमाल किया गया है, जो रॉ टेक्स्ट दिखाता है.output_format
पैरामीटर की डिफ़ॉल्ट वैल्यूtext
होती है.
इन ज़रूरी पैरामीटर और दूसरे वैकल्पिक पैरामीटर के बारे में ज़्यादा जानकारी के लिए, एपीआई का संदर्भ देखें.
इस शुरुआती ट्यूटोरियल के उदाहरण में क्लोज़र कंपाइलर सेवा को रॉ JavaScript की एक लाइन भेजी गई है. इसलिए, यह
code_url
के बजायjs_code
का इस्तेमाल करता है. इसमेंWHITESPACE_ONLY
केcompilation_level
का इस्तेमाल किया जाता है,text
केoutput_format
के साथ रॉ टेक्स्ट आउटपुट का अनुरोध किया जाता है, औरcompiled_code
केoutput_info
टाइप के बारे में पूछा जाता है. -
बंद करने की सेवा के लिए पोस्ट का अनुरोध करना
क्लोज़र कंपाइलर सेवा से आउटपुट पाने के लिए, क्लोसर कंपाइलर सेवा एपीआई के यूआरएल में पोस्ट अनुरोध में वे पैरामीटर भेजें जिन्हें आपने पहले चरण में चुना था. ऐसा करने का एक तरीका यह है कि आप एक सरल एचटीएमएल फ़ॉर्म का इस्तेमाल करें, जैसे कि Hello World of Clo क्लोज़र कंपाइलर सेवा एपीआई.
डेवलपमेंट के दौरान इस तरह का फ़ॉर्म इस्तेमाल करने के लिए, आपको ब्राउज़र से आउटपुट कॉपी करके उसे एक .js फ़ाइल में चिपकाना होगा. अगर, इसके बजाय, आप क्लोज़र कंपाइलर सेवा को अनुरोध भेजने के लिए एक छोटा प्रोग्राम लिखते हैं, तो आप क्लोज़र कंपाइलर आउटपुट को सीधे किसी फ़ाइल में लिख सकते हैं. उदाहरण के लिए, नीचे दी गई Python स्क्रिप्ट, क्लोज़र कंपाइलर सेवा को अनुरोध भेजती है और जवाब लिखती है:
#!/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()
ध्यान दें: इस उदाहरण को फिर से बनाने के लिए, Windows के उपयोगकर्ताओं को Python इंस्टॉल करना पड़ सकता है. Windows में Python इंस्टॉल करने और इसका इस्तेमाल करने के निर्देश पाने के लिए, Python Windows से जुड़े अक्सर पूछे जाने वाले सवाल देखें.
यह स्क्रिप्ट, कमांड लाइन आर्ग्युमेंट के तौर पर पास की गई JavaScript को ऑप्टिमाइज़ करती है. ऊपर दिए गए कोड को
compile.py
नाम की फ़ाइल में चिपकाएं, फ़ाइल को एक्ज़ीक्यूटेबल बनाने के लिए उसकी अनुमतियों में बदलाव करें, और यह निर्देश दें:$ python compile.py 'alert("hello");// This comment should be stripped'
यह निर्देश, क्लोज़र कंपाइलर रिस्पॉन्स से कंप्रेस किए गए कोड को प्रिंट कर देता है:
alert("hello");
इस उदाहरण में बेसिक कंपाइलेशन का इस्तेमाल किया गया है. इसलिए, कंपाइलर टिप्पणी को छोड़कर और कुछ नहीं करता.
इस स्क्रिप्ट के बारे में कुछ ज़रूरी बातें:
-
पैरामीटर, यूआरएल-एन्कोड किए गए स्ट्रिंग के तौर पर एचटीटीपीएस कनेक्शन के अनुरोध वाले तरीके को पास किए जाते हैं.
urllib.urlencode
को कॉल करने के बाद, पैरामीटर वैरिएबल में यह स्ट्रिंग शामिल होती है: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
अपनी स्क्रिप्ट लिखने पर, यूआरएल में कोड किया गया कॉन्टेंट, स्क्रिप्ट में इस तरह का होना चाहिए. - अनुरोध में हमेशा
application/x-www-form-urlencoded
काContent-type
हेडर होना चाहिए
-
पैरामीटर, यूआरएल-एन्कोड किए गए स्ट्रिंग के तौर पर एचटीटीपीएस कनेक्शन के अनुरोध वाले तरीके को पास किए जाते हैं.
अगले चरण
ज़्यादा असल डेवलपमेंट वाली जगह पर बेहतर कंप्रेशन हासिल करने के लिए इस सेवा का इस्तेमाल करने के बारे में जानने के लिए, एपीआई की मदद से फ़ाइलें कंप्रेस करना जारी रखें.