YUI Compressor บีบอัดเนื้อหา JavaScript รวมถึง:
- ลบความคิดเห็น
- ลบช่องว่างเพิ่มเติม
- การเพิ่มประสิทธิภาพเล็กน้อย
- การเปลี่ยนตัวระบุ
YUI Compressor มีการเพิ่มประสิทธิภาพอย่างละเอียดอะไรบ้าง?
- object["property"] หากชื่อคุณสมบัติเป็นตัวระบุ JavaScript ทางกฎหมาย (หมายเหตุ: ตัวระบุ JavaScript ทางกฎหมายเริ่มต้นด้วยตัวอักษร หรือตามด้วยตัวอักษร ตัวเลข หรือขีดล่างตั้งแต่หนึ่งตัวขึ้นไป) และไม่ใช่คำสงวน จะถูกปรับให้เหมาะสม ถึง: object.property
- {"property":123} หากชื่อคุณสมบัติเป็นตัวระบุ JavaScript ทางกฎหมายและไม่ใช่คำที่สงวนไว้ ชื่อนั้นจะถูกปรับให้เหมาะสมเป็น {property:123} (หมายเหตุ: ในตัวอักษรของอ็อบเจ็กต์ หากชื่อคุณสมบัติเป็นตัวระบุ JavaScript ทางกฎหมาย และไม่ใช่คำสงวนและไม่ต้องใช้ชื่อทรัพย์สินที่อ้างอิง)
- 'abcd'efgh' จะถูกปรับให้เหมาะสมเป็น "abcd'efgh"
- "abcd" + "efgh" หากมีการเชื่อมต่อสตริง จะถูกปรับให้เหมาะสมเป็น "abcdefgh" (หมายเหตุ: ทั้งหมดนี้อยู่ภายใต้สมมติฐานของการใช้ YUI Compressor สำหรับการเชื่อมต่อสตริงในสคริปต์ ประสิทธิภาพและประสิทธิผลของการใช้ตัวเชื่อมต่อ "+" คือ การบำรุงรักษาสูงสุด)
การเพิ่มประสิทธิภาพการบีบอัดที่มีประสิทธิภาพสูงสุดสำหรับ JavaScript คือการแทนที่ตัวระบุ
ตัวอย่างเช่น:
(การทำงาน(){
ฟังก์ชั่นเพิ่ม (num1, num2) {
กลับ num1 + num2;
-
-
หลังจากแทนที่ตัวระบุประเภท:
(การทำงาน(){
ฟังก์ชัน A(C, B) {
กลับ C+ B;
-
-
หลังจากลบช่องว่างเพิ่มเติมแล้ว เราจะได้:
(function(){function A(C,B){return C+B;}})();
การเปลี่ยนตัวระบุคอมเพรสเซอร์ YUI จะแทนที่เฉพาะชื่อฟังก์ชันและชื่อตัวแปร ดังนั้นอะไรที่ไม่สามารถแทนที่ได้
- ค่าพื้นฐาน: สตริง บูลีน ตัวเลข null และไม่ได้กำหนด โดยทั่วไปแล้ว สตริงจะใช้พื้นที่มากที่สุด ตามด้วยตัวอักษรที่ไม่ใช่ตัวเลข (true, false, null, underfinded)
- ตัวแปรร่วม: หน้าต่าง, เอกสาร, XMLHttpRequest ฯลฯ สิ่งที่ใช้บ่อยที่สุดคือเอกสารและหน้าต่าง
- ชื่อแอตทริบิวต์ เช่น: foo.bar พื้นที่ว่างรองจากสตริงเท่านั้น ไม่สามารถแทนที่ตัวดำเนินการ "." ได้ และ abc จะใช้พื้นที่มากขึ้น
- คำหลัก คีย์เวิร์ดที่มักใช้มากเกินไป ได้แก่ var, return วิธีการเพิ่มประสิทธิภาพที่ดีที่สุด: คำหลัก var และ return จะปรากฏเพียงครั้งเดียวในฟังก์ชัน
การเพิ่มประสิทธิภาพสำหรับค่าดั้งเดิม ตัวแปรร่วม และชื่อแอตทริบิวต์จะเหมือนกันโดยประมาณ: ค่าตามตัวอักษร ตัวแปรร่วม หรือชื่อแอตทริบิวต์ที่ใช้มากกว่า 2 ครั้ง (รวม 2 ครั้ง) ควรถูกแทนที่ด้วยพื้นที่จัดเก็บตัวแปรภายในเครื่อง
อย่างไรก็ตาม มีบางสถานการณ์ที่ห้ามใช้การทดแทนตัวระบุ:
- ใช้ฟังก์ชัน eval() วิธีแก้ไข: ห้ามใช้หรือสร้างฟังก์ชันโกลบอลที่ห่อหุ้ม eval()
- ใช้คำสั่ง with วิธีแก้ไข: วิธีการเหมือนกับข้างต้น
- ความคิดเห็นแบบมีเงื่อนไขสำหรับ JScript ทางออกเดียว: อย่าใช้มัน
เนื่องจาก YUI Compressor สร้างขึ้นจาก ล่ามแรด การเพิ่มประสิทธิภาพทั้งหมดที่กล่าวมาข้างต้นจึงปลอดภัย
อ่านเพิ่มเติม:
"การบีบอัด JavaScript ขั้นสูงด้วย YUI Compressor"
ต้นฉบับ:
http://www.planabc.net/2009/08/02/javascript-compression_with_yui_compressor/