การอ้างอิง Closure Compiler Service API

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

ภาพรวม

หากต้องการขอโค้ดที่คอมไพล์หรือข้อมูลอื่นๆ จากบริการ Closure Compiler คุณต้องส่งคําขอ HTTP POST ไปยัง URL นั้น https://closure-compiler.appspot.com/compile เนื้อหาของคําขอต้องมีพารามิเตอร์ที่ระบุอยู่ในพารามิเตอร์คําขอที่จําเป็น และมีพารามิเตอร์ที่ไม่บังคับซึ่งระบุไว้ในพารามิเตอร์คําขอที่ไม่บังคับด้วย

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

หากเซิร์ฟเวอร์ประมวลผลคําขอของคุณไม่สําเร็จ คุณจะได้รับข้อความแสดงข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์ ข้อความเหล่านี้อธิบายไว้ในส่วนข้อความแสดงข้อผิดพลาด

พารามิเตอร์คําขอ

พารามิเตอร์คําขอที่จําเป็น

js_code หรือ code_url

JavaScript ที่คอมไพล์ไว้ คุณต้องใส่พารามิเตอร์เหล่านี้อย่างน้อย 1 รายการ และมีทั้ง 2 อย่างได้

พารามิเตอร์ js_code ต้องเป็นสตริงที่มี JavaScript เช่น alert('hello')

พารามิเตอร์ code_url ต้องมี URL ของไฟล์ JavaScript คุณสามารถใส่พารามิเตอร์ code_url หลายรายการเพื่อระบุไฟล์อินพุตหลายไฟล์

compilation_level

โปรดดูเอกสารเกี่ยวกับ compilation_level ที่แฟล็กและตัวเลือก

output_format
รูปแบบสําหรับเอาต์พุตของบริการ Closure Compiler เอาต์พุตมี 3 รูปแบบดังนี้
xml

รูปแบบเอาต์พุต xml จะรวมข้อมูลที่ขอไว้ใน XML ที่ถูกต้อง

เอาต์พุต XML มีลักษณะดังนี้

        <compilationResult>
          <compiledCode>var a="hello";alert(a);</compiledCode>
          <statistics>
            <originalSize>98</originalSize>
            <compressedSize>35</compressedSize>
            <compileTime>0</compileTime>
          </statistics>
        </compilationResult>
      

ส่วน compiledCode มี JavaScript ที่บีบอัดซึ่งบริการ Closure Compiler สร้างขึ้น ส่วนนี้จะแสดงต่อเมื่อพารามิเตอร์ output_info มีค่าเป็น compiled_code ในคําขอ ในทํานองเดียวกัน ส่วน statistics จะปรากฏขึ้นก็ต่อเมื่อคุณรวมพารามิเตอร์ output_info ที่มีค่าเป็น statistics เท่านั้น

หากคุณใส่พารามิเตอร์ output_info ที่มีค่า warnings และคอมไพเลอร์จะสร้างคําเตือน เอาต์พุตจะมีแท็ก warnings ดังนี้

        <compilationResult>
         ...
         <warnings>
           <warning type="JSC_NO_SIDE_EFFECT" file="default.js" lineno="12" charno="3"  line="delete 1;">warning 1</warning>
           <warning type="JSC_UNUSED_VAR" file="default.js" lineno="13" charno="13" line="delete 1;">warning 2 </warning>
         </warnings>
          ...
        </compilationResult>
      

หากคุณใส่ output_info ที่มีค่า errors บริการ Closure Compiler จะมีแท็ก errors หากโค้ดมีข้อผิดพลาดด้านไวยากรณ์หรือปัญหาอื่นๆ ที่ขัดขวางการรวบรวม แท็ก errors มีลักษณะดังนี้

        <compilationResult>
          ...
          <errors>
            <error type="JSC_NO_SIDE_EFFECT" file="default.js" lineno="12" charno="3"  line="var x=-'hello';">error 1 </error>
            <error type="JSC_UNUSED_VAR" file="default.js" lineno="13" charno="13" line="var x=-'hello'">error 2 </error>
          </errors>
          ...
        </compilationResult>
      

แอตทริบิวต์ file, line และ col ของแท็ก error และ warning บ่งบอกว่าบริการ Closure Compiler พบข้อผิดพลาดที่ใด

หากบริการ Closure Compiler พบข้อผิดพลาดที่ทําให้ประมวลผลอินพุตไม่ได้ เอาต์พุตจะมีลักษณะดังนี้

        <compilationResult>
          <serverErrors>
            <error code="1">Over quota</error>
          </serverErrors>
        </compilationResult>
      
json

รูปแบบเอาต์พุต json จะรวมข้อมูลที่ขอในสตริง JavaScript Object Notation (JSON) การประเมินสตริงนี้เป็น JavaScript เพื่อแสดงออบเจ็กต์ JavaScript

เอาต์พุต JSON มีลักษณะดังนี้

{
"compiledCode":/* raw code here */,
{"errors": [
  {"charno":4321,
   "error":"ERROR: You failed.",
   "lineno":1234,
   "file":"default.js",
   "type":"ERROR_TYPE",
   "line":"var x=-'hello';"}],
"warnings": [
  {"charno":4321,
   "lineno":1234,
   "file":"default.js",
   "type":"ERROR_TYPE",
   "warning":"Warning: You did something wrong!",
   "line":"delete 1;"}]
"serverErrors":[
  {"code":123,"error":"Over quota"}
  ],
"statistics":{
  "originalSize":10,
  "compressedSize":3000
  "compileTime":10
  }
}
      

รูปแบบ JSON คล้ายกับรูปแบบ XML นั่นคือ ทุกแท็กในเอาต์พุต XML จะสอดคล้องกับพร็อพเพอร์ตี้ที่มีชื่อเดียวกันในออบเจ็กต์ JSON

text
รูปแบบเอาต์พุต text จะแสดงข้อความดิบโดยไม่มีแท็กหรือวงเล็บ JSON หาก output_info มี compiled_code ข้อความจะมี JavaScript ด้วย หาก output_info มี warnings ข้อความจะมีข้อความเตือน หาก output_info มี statistics ข้อความจะมีสถิติ

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

output_info

ระบุประเภทของเอาต์พุตที่คุณต้องการคอมไพเลอร์ เอาต์พุตมี 4 ประเภทดังนี้

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

ข้อมูลเกี่ยวกับระดับการบีบอัดที่เครื่องมือปิด Closure ได้รับ สําหรับเอาต์พุต XML บริการ Closure Compiler จะแสดงผลสถิติในรูปแบบต่อไปนี้

        <compilationResult>
          ...
          <statistics>
            <firstStatisticName>24</firstStatisticName>
            <secondStatisticName>15</secondStatisticName>
          </statistics>
        </compilationResult>
      

พารามิเตอร์คําขอที่ไม่บังคับ

js_externs

ค่าของพารามิเตอร์นี้ต้องเป็นโค้ด JavaScript ที่ประกาศชื่อฟังก์ชันหรือสัญลักษณ์อื่นๆ ใช้ js_externs เพื่อคงสัญลักษณ์ที่กําหนดไว้นอกโค้ดที่คุณคอมไพล์ไว้ พารามิเตอร์ js_externs จะมีผลก็ต่อเมื่อคุณใช้ compilation_level จาก ADVANCED_OPTIMIZATIONS ดูข้อมูลเพิ่มเติมที่การรวบรวมขั้นสูง

externs_url

ค่าของพารามิเตอร์นี้ต้องเป็น URL ของไฟล์ที่มี JavaScript ที่ประกาศชื่อฟังก์ชันหรือสัญลักษณ์อื่นๆ สัญลักษณ์ที่ประกาศในไฟล์นี้จะยังคงอยู่เหมือนกับสัญลักษณ์ที่แสดงในพารามิเตอร์ js_externs โดยตรง พารามิเตอร์ externs_url จะมีผลก็ต่อเมื่อคุณใช้ compilation_level จาก ADVANCED_OPTIMIZATIONS ดูข้อมูลเพิ่มเติมที่การรวบรวมขั้นสูง

คุณจะระบุพารามิเตอร์นี้หลายครั้งได้หากมีไฟล์ภายนอกหลายรายการ

exclude_default_externs

โดยค่าเริ่มต้น บริการ Closure Compiler จะใช้ไฟล์ Extern แบบมาตรฐานที่ประกาศสัญลักษณ์ทั่วไปที่กําหนดไว้ภายนอก เช่น document และวิธีการทั้งหมด หากไม่ต้องการใช้ URL ภายนอกเหล่านี้ ให้ใส่พารามิเตอร์ exclude_default_externs ที่มีค่า true ในคําขอ

ดูข้อมูลเพิ่มเติมเกี่ยวกับส่วนขยายภายนอกได้ที่หัวข้อการรวบรวมขั้นสูงและภายนอก

output_file_name

หากมี บริการ Closure Compiler จะแคชโค้ดที่คอมไพล์ไว้นาน 1 ชั่วโมงและให้บริการผ่าน URL พิเศษ ในระหว่างชั่วโมงนี้ คุณจะทดสอบโค้ดที่คอมไพล์ได้โดยชี้เบราว์เซอร์ไปยัง URL นี้ URL มีแบบฟอร์มนี้

https://closure-compiler.appspot.com/code/bf067f356d510e1c7b81347eb84f65d2/[value of output_file_name]

formatting

โปรดดูเอกสารเกี่ยวกับ formatting ที่แฟล็กและตัวเลือก คุณระบุพารามิเตอร์ formatting หลายรายการในคําขอเดียวกันได้

use_closure_library

หากพารามิเตอร์ use_closure_library มีค่าเป็น true คอมไพเลอร์จะมองหาคําสั่ง goog.require() ในซอร์สโค้ดและระบุโค้ด Closure Library ที่ขอโดยคําสั่งดังกล่าว นอกจากนี้ ยังดําเนินการเพิ่มประสิทธิภาพที่ออกแบบมาเพื่อโค้ด Closure Library โดยเฉพาะอีกด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับไลบรารี Closure Library ในเอกสารประกอบของ Closure Library ดูข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชัน goog.require() ในการค้นหาเส้นทางรอบไลบรารีการปิด

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

warning_level

โปรดดูเอกสารเกี่ยวกับ warning_level ที่แฟล็กและตัวเลือก

language

ดูเอกสารประกอบสําหรับตัวเลือก language_in ที่เทียบเท่าที่แฟล็กและตัวเลือก

language_out

โปรดดูเอกสารเกี่ยวกับ language_out ที่แฟล็กและตัวเลือก

rewrite_polyfills

โปรดดูเอกสารเกี่ยวกับ rewrite_polyfills ที่แฟล็กและตัวเลือก

use_types_for_optimization

โปรดดูเอกสารเกี่ยวกับ use_types_for_optimization ที่แฟล็กและตัวเลือก

ข้อความแสดงข้อผิดพลาด

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

รหัสข้อผิดพลาดข้อความแสดงข้อผิดพลาดความหมาย
2โหมดเอาต์พุตที่ไม่รู้จักค่าของพารามิเตอร์ output_format เป็นค่าอื่นที่ไม่ใช่ xml, json หรือ text
4ไม่ทราบระดับการบีบอัดค่าของพารามิเตอร์ compilation_level เป็นค่าอื่นที่ไม่ใช่ WHITESPACE_ONLY, SIMPLE_OPTIMIZATIONS หรือ ADVANCED_OPTIMIZATIONS
8ข้อมูล POST มีขนาดใหญ่เกินไป ข้อมูลที่ส่งไปยังบริการ Closure Compiler มีขนาดเกิน 200,000 ไบต์ ทั้ง UI ของบริการคอมไพเลอร์และการเรียก API จะใช้คําขอ HTTP POST เพื่อสื่อสารกับบริการ และปริมาณข้อมูลที่ส่งไปในคําขอนี้ต้องไม่เกิน 200,000 ไบต์ สําหรับการเรียก API ขีดจํากัดนี้จะใช้กับจํานวนข้อความทั้งหมดในพารามิเตอร์คําขอทั้งหมด สําหรับ UI ของ Closure Compiler ขีดจํากัดนี้จะใช้กับจํานวนข้อความทั้งหมดในซอร์สโค้ดและตัวเลือกคอมไพเลอร์ เช่น @code_url หากคําขอมีขนาดใหญ่เกินไป ให้ย้ายซอร์สโค้ดไปยังไฟล์แยกต่างหากและอ้างอิงโดยใช้ @code_url หรือใช้แอปพลิเคชัน Closure Compiler ในเครื่องของคุณ
9ไฟล์ใหญ่เกินไปจํานวนโค้ดจากไฟล์ code_url ทั้งหมด, ไฟล์ externs_url ทั้งหมด, โค้ด js_code ทั้งหมด และรหัส js_externs ทั้งหมดเกิน 1024000 ไบต์
10เรียกเนื้อหาจาก URL ไม่ได้เกิดข้อผิดพลาดเมื่อบริการ Closure Compiler พยายามเรียกข้อมูลไฟล์ JavaScript ที่ระบุในพารามิเตอร์ code_url หรือไฟล์ภายนอกซึ่งมีอยู่ในพารามิเตอร์ externs_url ตรวจสอบว่า URL ถูกต้องและดูสิทธิ์ของไฟล์ได้
12URL มีรูปแบบไม่ถูกต้องค่าพารามิเตอร์ของ code_url หรือพารามิเตอร์ externs_url ไม่ใช่ URL ที่มีรูปแบบถูกต้อง
13ไม่มีข้อมูลเอาต์พุตที่จะผลิต แต่ระบบขอการรวบรวม ไม่ได้ระบุพารามิเตอร์ output_info
14ค่าเอาต์พุต_ที่ไม่รู้จักค่าของพารามิเตอร์ output_info เป็นค่าอื่นที่ไม่ใช่ compiled_code, warnings หรือ statistics
16ไม่ทราบระดับคําเตือนค่าของพารามิเตอร์ warning_level เป็นค่าอื่นที่ไม่ใช่ QUIET, DEFAULT หรือ VERBOSE
17ตัวเลือกการจัดรูปแบบที่ไม่รู้จักค่าของพารามิเตอร์ formatting มีค่าอื่นที่ไม่ใช่ pretty_print
18พารามิเตอร์ที่ไม่รู้จักในคําขอ HTTPคําขอ HTTP มีพารามิเตอร์อื่นที่ไม่ใช่ 1 รายการที่ปรากฏในเอกสารนี้
19ค่าไม่ถูกต้องสําหรับoutput_file_name ชื่อไฟล์เอาต์พุตมีอักขระ 1 ตัว ตัวอักษร จุด ขีดล่าง หรือขีดกลาง หรือประกอบด้วยจุดติดกัน 2 จุด (..)
22คอมไพล์ดําเนินการมากเกินไปเมื่อเร็วๆ นี้ ลองอีกครั้งในภายหลัง คุณส่งคอมไพล์จากเครื่องมากเกินไป หลังจาก 1 ชั่วโมง คุณควรคอมไพล์ได้อีกครั้ง
23ข้อยกเว้นของคอมไพเลอร์ (มีการติดตามย้อนหลัง) คอมไพเลอร์ขัดข้อง ข้อความแสดงข้อผิดพลาดจะมีข้อมูลเพื่อช่วย Google แก้ไขข้อบกพร่อง
24ประเภททรัพยากรอินพุตที่ไม่รองรับ ประเภททรัพยากรไม่ใช่ http: และระบบจะไม่เรียกดูไฟล์อินพุต