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