การสื่อสารกับ Closure Compiler Service API

บริการคอมไพเลอร์ Closure เลิกใช้งานแล้วและจะถูกนําออก โปรดลองเรียกใช้คอมไพเลอร์ในเครื่องแทน

ภาพรวม

Closure Compiler Service API ให้สิทธิ์เข้าถึงการคอมไพล์ JavaScript ของ Closure Compiler แบบเป็นโปรแกรมผ่าน API บนเว็บ แม้ว่า UI ของ Closure Compiler จะเป็นวิธีง่ายๆ ในการใช้บริการคอมไพเลอร์ผ่านแบบฟอร์มง่ายๆ ในหน้าเว็บ แต่การคัดลอกเอาต์พุตจากหน้าเว็บนี้ไม่ใช่วิธีที่มีประสิทธิภาพมากที่สุด คุณสามารถใช้ API บริการ Closure Compiler เพื่อทําสิ่งต่างๆ ได้หลากหลายเพื่อสร้างเครื่องมือของคุณเองและสร้างกระบวนการทํางานของคุณเอง

บทแนะนํานี้จะแนะนํากระบวนการส่ง JavaScript ไปยังบริการ Closure Compiler และรับเอาต์พุต Closure Compiler กลับ ตัวอย่างนี้ใช้การรวบรวม Closure Compiler ระดับพื้นฐานที่สุด ซึ่งจะตัดความคิดเห็นและช่องว่างออกจาก JavaScript

บทแนะนํานี้จะถือว่าคุณมีความคุ้นเคยกับ JavaScript และ HTTP ในระดับพื้นฐาน แม้ว่าจะใช้สคริปต์ Python เพื่อส่ง JavaScript ไปยังบริการ Closure Compiler คุณไม่จําเป็นต้องรู้จัก Python ทําตามตัวอย่าง

วิธีสื่อสารกับ API

  1. ระบุพารามิเตอร์คําขอ

    คุณโต้ตอบกับบริการ Closure Compiler โดยส่งคําขอ HTTP POST ไปยังเซิร์ฟเวอร์ Closure Compiler คุณต้องส่งพารามิเตอร์ต่อไปนี้อย่างน้อย 1 รายการในคําขอแต่ละรายการ

    js_code หรือ code_url

    ค่าของพารามิเตอร์นี้ระบุ JavaScript ที่คุณต้องการคอมไพล์ คุณต้องใส่พารามิเตอร์เหล่านี้อย่างน้อย 1 รายการ คุณรวมพารามิเตอร์ทั้ง 2 ได้ พารามิเตอร์ js_code ต้องเป็นสตริงที่มี JavaScript เช่น alert('hello') พารามิเตอร์ code_url ต้องมี URL ของไฟล์ JavaScript .js ที่พร้อมให้บริการผ่าน HTTP

    คุณยังใส่พารามิเตอร์แหล่งที่มาที่มีชื่อในรูปแบบ js_code:path/to/filename.js ได้ด้วย แต่ละไฟล์จะสร้างขึ้นในระบบไฟล์เสมือน เปิดใช้งานโมดูลมาตรฐานผ่านคําสั่ง import และ export ที่รองรับใน ECMASCRIPT6

    compilation_level

    ค่าของพารามิเตอร์นี้ระบุระดับการบีบอัดและการเพิ่มประสิทธิภาพที่จะใช้กับ JavaScript การรวบรวมเป็นไปได้ 3 ระดับคือ WHITESPACE_ONLY, SIMPLE_OPTIMIZATIONS และ ADVANCED_OPTIMIZATIONS ตัวอย่างนี้เป็นการรวบรวมWHITESPACE_ONLY ซึ่งแค่ตัดความคิดเห็นและการเว้นวรรคออก

    พารามิเตอร์ compilation_level มีค่าเริ่มต้นเป็น SIMPLE_OPTIMIZATIONS

    output_info

    ค่าของพารามิเตอร์นี้จะระบุประเภทข้อมูลที่คุณต้องการจากคอมไพเลอร์ เอาต์พุตมี 4 ประเภท ได้แก่ compiled_code, warnings, errors และ statistics ตัวอย่างนี้ใช้ค่า compiled_code ซึ่งบอกให้บริการ Closure Compiler ส่ง JavaScript เวอร์ชันที่บีบอัดเพื่อรับเอาต์พุตในคําขอ

    output_format

    รูปแบบสําหรับเอาต์พุตของบริการ Closure Compiler รูปแบบผลลัพธ์ที่เป็นไปได้มี 3 รูปแบบ ได้แก่ text, json หรือ xml ตัวอย่างนี้ใช้ค่า text ซึ่งแสดงผลลัพธ์เป็นข้อมูลดิบ

    พารามิเตอร์ output_format มีค่าเริ่มต้นเป็น text

    สําหรับข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์ที่จําเป็นเหล่านี้และพารามิเตอร์ที่ไม่บังคับเพิ่มเติม โปรดดูเอกสารอ้างอิง API

    ตัวอย่างในบทแนะนําขั้นต้นนี้จะส่ง JavaScript ดิบเพียง 1 บรรทัดไปยังบริการ Closure Compiler ดังนั้นจะใช้ js_code แทน code_url โดยใช้ compilation_level จาก WHITESPACE_ONLY ขอเอาต์พุตข้อความดิบด้วย output_format ของ text และขอ compiled_code ประเภท output_info

  2. ส่งคําขอโพสต์ไปยังบริการปิดคอมไพล์

    หากต้องการรับเอาต์พุตจากบริการ Closure Compiler ให้ส่งพารามิเตอร์ที่คุณเลือกในขั้นตอนที่ 1 ในคําขอ POST ไปยัง URL ของ Closure Compiler Service API วิธีหนึ่งที่ทําได้คือแบบฟอร์ม HTML ง่ายๆ อย่างใน Hello World of the Closure Compiler Service API

    หากต้องการใช้แบบฟอร์มลักษณะนี้ระหว่างการพัฒนา คุณจะต้องคัดลอกเอาต์พุตออกจากเบราว์เซอร์ แล้ววางลงในไฟล์ .js หากเขียนโปรแกรมขนาดเล็กเพื่อส่งคําขอไปยังบริการปิด Closure ให้เขียนเอาต์พุต Closure Compiler ไปยังไฟล์โดยตรงแทน ตัวอย่างเช่น สคริปต์ Python ต่อไปนี้จะส่งคําขอไปยังบริการ Closure Compiler และเขียนคําตอบออกมา

    #!/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 โปรดดูคําถามที่พบบ่อยเกี่ยวกับ Python Windows สําหรับวิธีการติดตั้งและใช้ Python ใต้ Windows

    สคริปต์นี้จะเพิ่มประสิทธิภาพ JavaScript ที่ส่งไปยังสคริปต์เป็นอาร์กิวเมนต์บรรทัดคําสั่ง วางโค้ดข้างต้นลงในไฟล์ชื่อ compile.py เปลี่ยนสิทธิ์ของไฟล์เพื่อให้ไฟล์ปฏิบัติการและเรียกใช้คําสั่งต่อไปนี้

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

    คําสั่งนี้จะพิมพ์โค้ดที่บีบอัดออกจากการตอบกลับ Closure Compiler

    alert("hello");
    

    เนื่องจากตัวอย่างนี้ใช้การรวบรวมพื้นฐาน คอมไพเลอร์จึงไม่ต้องดําเนินการใดๆ อีกนอกเหนือจากการลบความคิดเห็นออก

    ข้อควรทราบบางประการสําหรับสคริปต์นี้:

    • ระบบจะส่งพารามิเตอร์ไปยังเมธอดคําขอของ HTTPSConnection เป็นสตริงที่เข้ารหัส URL หลังจากการเรียก 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
          
      หากคุณเขียนสคริปต์ของคุณเอง สคริปต์ควรโพสต์เนื้อหาที่เข้ารหัส URL แบบนี้
    • คําขอต้องมีส่วนหัว Content-type เป็น application/x-www-form-urlencoded เสมอ
  3. ขั้นตอนถัดไป

    หากต้องการเรียนรู้วิธีใช้บริการเพื่อให้ได้การบีบอัดที่ดีขึ้นในสถานการณ์การพัฒนาที่สมจริงมากขึ้น ให้ไปที่การบีบอัดไฟล์ด้วย API ต่อไป