क्लोज़र कंपाइलर सेवा एपीआई से संपर्क करना

क्लोज़र कंपाइलर की सेवा बंद कर दी गई है और इसे हटा दिया जाएगा. इसके बजाय, कंपाइलर को स्थानीय तौर पर चलाएं.

खास जानकारी

Closure Compiler सेवा API, वेब-आधारित एपीआई के ज़रिए Closure कंपाइलर JavaScript संकलन का प्रोग्राम-संबंधी ऐक्सेस देता है. Closure कंपाइलर UI की मदद से, वेब पेज पर मौजूद आसान फ़ॉर्म से कंपाइलर सेवा का आसानी से इस्तेमाल किया जा सकता है. हालांकि, इस वेब पेज से आउटपुट कॉपी करने से आपको ज़्यादा मदद मिलेगी. Closure Compiler API (एपीआई) की मदद से आपको अपने टूल बनाने और अपने काम के तरीके खुद बनाने की सुविधा मिलती है.

इस ट्यूटोरियल में, क्लोज़र कंपाइलर सेवा में JavaScript भेजने और क्लोज़र कंपाइलर आउटपुट को वापस पाने की प्रोसेस के बारे में बताया गया है. इस उदाहरण में क्लोज़र कंपाइलर के सबसे बुनियादी लेवल का इस्तेमाल किया गया है. इसमें, आपके JavaScript से टिप्पणियां और खाली सफ़ेद जगह को हटाया जाता है.

इस ट्यूटोरियल में यह माना जाता है कि आपको JavaScript और एचटीटीपी की बुनियादी जानकारी है. हालांकि, यह Closure कंपाइलर सेवा में JavaScript को सबमिट करने के लिए Python स्क्रिप्ट का उपयोग करता है, लेकिन उदाहरण का पालन करने के लिए आपको Python की जानकारी होना ज़रूरी नहीं है.

एपीआई से कनेक्ट करने का तरीका

  1. अनुरोध के पैरामीटर तय करना

    क्लोज़र कंपाइलर सर्वर पर एचटीटीपी 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 टाइप के बारे में पूछा जाता है.

  2. बंद करने की सेवा के लिए पोस्ट का अनुरोध करना

    क्लोज़र कंपाइलर सेवा से आउटपुट पाने के लिए, क्लोसर कंपाइलर सेवा एपीआई के यूआरएल में पोस्ट अनुरोध में वे पैरामीटर भेजें जिन्हें आपने पहले चरण में चुना था. ऐसा करने का एक तरीका यह है कि आप एक सरल एचटीएमएल फ़ॉर्म का इस्तेमाल करें, जैसे कि 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 हेडर होना चाहिए
  3. अगले चरण

    ज़्यादा असल डेवलपमेंट वाली जगह पर बेहतर कंप्रेशन हासिल करने के लिए इस सेवा का इस्तेमाल करने के बारे में जानने के लिए, एपीआई की मदद से फ़ाइलें कंप्रेस करना जारी रखें.