Closure Compiler ช่วยให้คุณเลือกการคอมไพล์ได้ 3 ระดับ ตั้งแต่การนำช่องว่างและความคิดเห็นออกอย่างง่าย ไปจนถึงการแปลงโค้ดอย่างเข้มงวด
WHITESPACE_ONLY
ระดับการคอมไพล์ WHITESPACE_ONLY จะนำความคิดเห็นออกจากโค้ด
และยังนำการขึ้นบรรทัดใหม่ ช่องว่างที่ไม่จำเป็น
เครื่องหมายวรรคตอนที่ไม่เกี่ยวข้อง (เช่น วงเล็บและเครื่องหมายอัฒภาค) และ
การเว้นวรรคอื่นๆ ออกด้วย JavaScript เอาต์พุตมีฟังก์ชันการทำงานเหมือนกับ JavaScript ต้นฉบับทุกประการ
การแปลงภาษาของฟีเจอร์ภาษาจะยังคงเกิดขึ้นหากโหมดภาษาเอาต์พุตที่ขอ
แตกต่างจากโหมดภาษาอินพุต
ดู --language_in และ --language_out ใน
Flags และตัวเลือก
ระดับการคอมไพล์นี้มีการบีบอัดน้อยที่สุดใน 3 ระดับ
SIMPLE_OPTIMIZATIONS
SIMPLE_OPTIMIZATIONSระดับการคอมไพล์จะWHITESPACE_ONLY
นำช่องว่างและความคิดเห็นออกเหมือนกับ WHITESPACE_ONLY แต่ยังทำการเพิ่มประสิทธิภาพ
ภายในนิพจน์และฟังก์ชัน รวมถึงเปลี่ยนชื่อตัวแปร
และพารามิเตอร์ฟังก์ชันในเครื่องให้สั้นลงด้วย การเปลี่ยนชื่อ
ตัวแปรให้สั้นลงจะช่วยให้โค้ดมีขนาดเล็กลงอย่างมาก
เนื่องจากระดับ SIMPLE_OPTIMIZATIONS
เปลี่ยนชื่อเฉพาะสัญลักษณ์ที่อยู่ในฟังก์ชัน จึงไม่
รบกวนการโต้ตอบระหว่าง JavaScript ที่คอมไพล์แล้วกับ
JavaScript อื่นๆ
การคอมไพล์ด้วย SIMPLE_OPTIMIZATIONS จะรักษาฟังก์ชันการทำงานของ JavaScript ที่ถูกต้องตามไวยากรณ์ไว้เสมอ
โดยที่โค้ดต้องไม่เข้าถึงตัวแปรภายในโดยใช้ชื่อสตริง (โดย
ใช้คำสั่ง eval() เป็นต้น หรือโดยการเรียก
toString ในฟังก์ชัน)
SIMPLE_OPTIMIZATIONS คือระดับการคอมไพล์เริ่มต้น
ADVANCED_OPTIMIZATIONS
ADVANCED_OPTIMIZATIONSระดับการคอมไพล์จะทำการแปลง
เช่นเดียวกับ SIMPLE_OPTIMIZATIONS แต่
เพิ่มการแปลงทั่วโลกที่ดุดันมากขึ้นหลากหลายรูปแบบเพื่อให้
การบีบอัดสูงสุดในทั้ง 3
ระดับ ADVANCED_OPTIMIZATIONSระดับจะบีบอัด
JavaScript ได้ดีกว่าเครื่องมืออื่นๆ
หากต้องการเปิดใช้การบีบอัดขั้นสูงนี้ ADVANCED_OPTIMIZATIONS จะต้องมี
สมมติฐานที่ชัดเจน
เกี่ยวกับโค้ดที่คอมไพล์แล้ว หากโค้ดไม่เป็นไปตาม
สมมติฐานเหล่านั้น ADVANCED_OPTIMIZATIONS จะ
สร้างโค้ดที่ไม่ทำงาน
เช่น โค้ดที่คอมไพล์ด้วย ADVANCED_OPTIMIZATIONS อาจใช้กับโค้ดที่ไม่ได้คอมไพล์ไม่ได้ เว้นแต่คุณจะทำตามขั้นตอนพิเศษเพื่อให้มั่นใจว่าสามารถทำงานร่วมกันได้ หากคุณไม่ติดแฟล็กฟังก์ชันและพร็อพเพอร์ตี้ภายนอกที่อ้างอิงในโค้ด Closure Compiler จะเปลี่ยนชื่อการอ้างอิงในโค้ดอย่างไม่เหมาะสม ซึ่งจะทำให้ชื่อในโค้ดและในโค้ดภายนอกไม่ตรงกัน
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเตรียมโค้ด
สำหรับ ADVANCED_OPTIMIZATIONS
ได้ที่การคอมไพล์ขั้นสูงและ
Externs
การแปลงADVANCED_OPTIMIZATIONSมีดังนี้
- การเปลี่ยนชื่อที่เข้มงวดมากขึ้น:
การคอมไพล์ด้วย
SIMPLE_OPTIMIZATIONSจะเปลี่ยนชื่อ พารามิเตอร์และตัวแปรภายใน ฟังก์ชันเท่านั้นADVANCED_OPTIMIZATIONSยังเปลี่ยนชื่อ ตัวแปรส่วนกลาง ชื่อฟังก์ชัน และพร็อพเพอร์ตี้ด้วย - การนำโค้ดที่ไม่ได้ใช้แล้วออก:
การคอมไพล์ด้วย
ADVANCED_OPTIMIZATIONSจะนำ โค้ดที่พิสูจน์ได้ว่าเข้าถึงไม่ได้ออก ซึ่งจะมีประโยชน์อย่างยิ่งเมื่อใช้ร่วมกับไลบรารีขนาดใหญ่ หากคุณใช้ฟังก์ชันเพียงไม่กี่ฟังก์ชันจากไฟล์ไลบรารีขนาดใหญ่ คอมไพเลอร์จะนำทุกอย่างออกได้ ยกเว้นฟังก์ชันเหล่านั้นจากเอาต์พุต - การแทรกในบรรทัดทั่วโลก:
การคอมไพล์ด้วย
ADVANCED_OPTIMIZATIONSจะแทนที่ การเรียกฟังก์ชันบางรายการด้วยเนื้อหาของฟังก์ชัน การแปลงนี้เรียกว่า "การฝัง" คอมไพเลอร์จะแทรกฟังก์ชันก็ต่อเมื่อ พิจารณาแล้วว่าการแทรกนั้นปลอดภัยและช่วยประหยัดพื้นที่ การคอมไพล์ ด้วยADVANCED_OPTIMIZATIONSจะยังแทรกค่าคงที่ และตัวแปรบางรายการเมื่อคอมไพเลอร์พิจารณาว่าทำได้อย่าง ปลอดภัย
วิธีกำหนดระดับการคอมไพล์
หากต้องการตั้งค่าระดับการคอมไพล์ในแอปพลิเคชัน Closure Compiler ให้
ใส่ Flag บรรทัดคำสั่ง --compilation_level พร้อม
ค่า WHITESPACE_ONLY, SIMPLE
หรือ ADVANCED ดังในคำสั่งต่อไปนี้
java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --js hello.js