يقوم 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، لاتصالات السلسلة في البرامج النصية، تكون كفاءة وكفاءة استخدام الموصل "+" هي أعلى قابلية للصيانة).
إن تحسين الضغط الأكثر فعالية لجافا سكريبت هو استبدال المعرف.
على سبيل المثال:
(وظيفة(){
إضافة الدالة (num1، num2) {
إرجاع رقم 1 + رقم 2؛
}
})();
بعد استبدال معرف الجنس:
(وظيفة(){
الدالة أ(ج، ب) {
العودة ج + ب.
}
})();
بعد إزالة المسافات الزائدة نحصل على:
(function(){function A(C,B){return C+B;}})();
يستبدل استبدال معرف ضاغط YUI فقط أسماء الوظائف وأسماء المتغيرات، فما الذي لا يمكن استبداله؟
- القيم الأولية: السلسلة، المنطقية، العددية، الخالية، وغير المحددة. بشكل عام، السلاسل النصية تحتل المساحة الأكبر، تليها القيم الحرفية غير الرقمية (صحيح، خطأ، لاغ، غير مكتشف).
- المتغيرات العامة: النافذة، المستند، XMLHttpRequest، إلخ. الأكثر استخدامًا هي المستند والنافذة.
- اسم السمة، مثل: foo.bar. المساحة المشغولة تأتي في المرتبة الثانية بعد السلاسل النصية، ولا يمكن استبدال عامل التشغيل "." ويستهلك abc مساحة أكبر.
- الكلمات الرئيسية. الكلمات الرئيسية التي غالبًا ما يتم الإفراط في استخدامها هي: var، return. أفضل طريقة للتحسين: تظهر الكلمات الرئيسية var وreturn مرة واحدة فقط في الوظيفة.
إن المعالجة الأمثل للقيم الأولية والمتغيرات العامة وأسماء السمات هي نفسها تقريبًا: يجب استبدال أي قيمة حرفية أو متغير عام أو اسم سمة مستخدم أكثر من مرتين (بما في ذلك مرتين) بتخزين متغير محلي.
ومع ذلك، هناك بعض الحالات التي يُحظر فيها استبدال المعرف:
- استخدم الدالة إيفال (). الحل: لا تستخدم أو تنشئ دالة عامة تتضمن eval().
- استخدم مع العبارة. الحل: الطريقة هي نفسها المذكورة أعلاه.
- التعليقات الشرطية لـ JScript. الحل الوحيد: لا تستخدمه.
نظرًا لأن YUI Compressor مبني على مترجم وحيد القرن ، فإن جميع التحسينات المذكورة أعلاه آمنة.
مزيد من القراءة:
"ضغط جافا سكريبت الشديد باستخدام ضاغط YUI"
إبداعي:
http://www.planabc.net/2009/08/02/javascript-compression_with_yui_compressor/