บริการคอมไพเลอร์ 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
- ระบุพารามิเตอร์คําขอ
คุณโต้ตอบกับบริการ 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
-
ส่งคําขอโพสต์ไปยังบริการปิดคอมไพล์
หากต้องการรับเอาต์พุตจากบริการ 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
เสมอ
-
ระบบจะส่งพารามิเตอร์ไปยังเมธอดคําขอของ HTTPSConnection เป็นสตริงที่เข้ารหัส URL หลังจากการเรียก
ขั้นตอนถัดไป
หากต้องการเรียนรู้วิธีใช้บริการเพื่อให้ได้การบีบอัดที่ดีขึ้นในสถานการณ์การพัฒนาที่สมจริงมากขึ้น ให้ไปที่การบีบอัดไฟล์ด้วย API ต่อไป