تتيح لك أداة Closure Compiler الاختيار من بين ثلاثة مستويات من التجميع، بدءًا من الإزالة البسيطة للمسافة البيضاء والتعليقات وصولاً إلى عمليات تحويل الرموز الصارمة.
مسافة بيضاء فقط
يزيل مستوى تجميع WHITESPACE_ONLY
التعليقات
من الرمز ويزيل أيضًا فواصل الأسطر والمسافات غير الضرورية
وعلامات الترقيم الغريبة (مثل الأقواس وعلامات الفاصلة المنقوطة)
والمسافة البيضاء الأخرى. تتطابق JavaScript التي يتم إخراجها وظيفيًا مع JavaScript
المصدر.
ستظل ترجمة ميزات اللغة متاحة إذا كان وضع لغة
الإخراج المطلوب مختلفًا عن وضع لغة الإدخال.
راجِع --language_in
و--language_out
في
العلامات والخيارات.
ويوفر مستوى التجميع هذا أقل ضغط للمستويات الثلاثة.
عدد التحسينات: SIMPLE_OPTIMIZATIONS
يؤدي مستوى تجميع SIMPLE_OPTIMIZATIONS
إلى
تنفيذ المسافة البيضاء وإزالة التعليقات
نفسها التي يؤديها WHITESPACE_ONLY
، ولكنه يؤدي أيضًا عمليات تحسين
ضمن التعبيرات والوظائف، بما في ذلك إعادة تسمية
المتغيرات المحلية ومعلمات الدوال إلى أسماء أقصر. تؤدي إعادة تسمية المتغيّرات إلى أسماء أقصر إلى تصغير الرمز بشكل كبير. لا يتداخل المستوى SIMPLE_OPTIMIZATIONS
مع الرموز المحلية للدوال فقط،
وبالتالي لا يتداخل مع التفاعل بين JavaScript المجمّعة
وJavaScript الأخرى.
إنّ التجميع باستخدام SIMPLE_OPTIMIZATIONS
يؤدي دائمًا إلى الحفاظ على وظائف JavaScript صالحة من حيث البنية، شرط ألّا يصل الرمز إلى المتغيرات المحلية باستخدام أسماء السلاسل (باستخدام عبارات eval()
مثلاً أو عن طريق استدعاء toString في الدوال).
SIMPLE_OPTIMIZATIONS
هو مستوى التجميع التلقائي.
ADVANCED_OPTIMIZATIONS
يؤدي مستوى تجميع ADVANCED_OPTIMIZATIONS
إلى
إجراء الإحالات الناجحة نفسها التي يؤديها SIMPLE_OPTIMIZATIONS
، ولكنه
يضيف مجموعة متنوعة من الإحالات الناجحة العالمية الأكثر قوةً لتحقيق
أعلى ضغط لكل المستويات
الثلاثة. يعمل المستوى ADVANCED_OPTIMIZATIONS
على ضغط JavaScript بشكل أفضل مما هو ممكن باستخدام الأدوات الأخرى.
ولتفعيل هذا
الضغط الشديد، يقدّم ADVANCED_OPTIMIZATIONS
افتراضات قوية حول الرمز المجمّع. وإذا لم يتوافق الرمز
مع تلك الافتراضات، سينتج عن ADVANCED_OPTIMIZATIONS
رمز لا يعمل.
على سبيل المثال، إنّ الرمز الذي تم تجميعه باستخدام السمة ADVANCED_OPTIMIZATIONS
قد لا يعمل مع الرمز غير المجمَّع ما لم تتخذ إجراءات خاصة لضمان إمكانية التشغيل التفاعلي. إذا لم تبلِغ عن الدوال والمواقع الإلكترونية المشار إليها في الرمز البرمجي الخاص بك، سيعمل Closure Compiler على إعادة تسمية المراجع في الرمز بشكل غير ملائم، ما يؤدي إلى عدم تطابق بين الأسماء في الرمز والرمز الخارجي.
للاطّلاع على المزيد من المعلومات حول كيفية تحضير الرمز
لـ ADVANCED_OPTIMIZATIONS
،
يمكنك الاطّلاع على التجميع المتقدّم
والبيانات الخارجية.
تتضمن تحويلات ADVANCED_OPTIMIZATIONS
ما يلي:
- إعادة تسمية أكثر صرامة:
يؤدي التجميع باستخدام
SIMPLE_OPTIMIZATIONS
إلى إعادة تسمية المعلّمات والمتغيرات ضمن الدوال فقط. تعيدADVANCED_OPTIMIZATIONS
أيضًا تسمية المتغيّرات العمومية وأسماء الدوال والخصائص. - إزالة الرمز الميت:
تؤدي عملية التجميع باستخدام
ADVANCED_OPTIMIZATIONS
إلى إزالة الرمز الذي لا يمكن الوصول إليه. ويُعدّ هذا الإجراء مفيدًا بشكل خاص عند استخدامه مع المكتبات الكبيرة. إذا كنت تستخدم بعض الدوال فقط من ملف مكتبة كبير، يمكن لأداة التجميع إزالة كل الوظائف باستثناء تلك الدوال. - تضمين عالمي:
يؤدي التجميع باستخدام
ADVANCED_OPTIMIZATIONS
إلى استبدال بعض طلبات استدعاء الوظائف بنص الوظيفة. ويُعرف هذا التحويل باسم "تضمين". لا تُضمِّن المحول البرمجي وظائفها إلا عندما تحدد أن التضمين مضمن يوفر المساحة. تتضمّن أيضًا التجميعات باستخدامADVANCED_OPTIMIZATIONS
ثوابتًا متغيرة وبعض المتغيّرات عندما تحدّد أداة التجميع أنّها تستطيع إجراء ذلك على نحو آمن.
كيفية ضبط مستوى التجميع
تتّبع واجهة مستخدم خدمة Closure Compiler وخدمة وواجهة برمجة تطبيقات مختلفة طرقًا مختلفة لإعداد
compilation_level
.
في واجهة مستخدم خدمة Closure Compiler
لضبط مستوى التجميع في واجهة مستخدم خدمة Closure Compiler، انقر على أزرار الاختيار في قسم التحسين في الواجهة.
في واجهة برمجة تطبيقات خدمة Closure Compiler
لضبط مستوى التجميع في واجهة برمجة تطبيقات خدمة Closure Compiler، يجب تضمين معلمة طلب تُسمّى compilation_level
بقيمة WHITESPACE_ONLY
أو SIMPLE_OPTIMIZATIONS
أو ADVANCED_OPTIMIZATIONS
، كما في برنامج python التالي:
#!/usr/bin/python2.4 import httplib, urllib, sys params = urllib.urlencode([ ('code_url', sys.argv[1]), ('compilation_level', 'ADVANCED_OPTIMIZATIONS'), ('output_format', 'text'), ('output_info', 'compiled_code'), ]) headers = { "Content-type": "application/x-www-form-urlencoded" } conn = httplib.HTTPSConnection('closure-compiler.appspot.com') conn.request('POST', '/compile', params, headers) response = conn.getresponse() data = response.read() print data conn.close()
في تطبيق Closure Compiler
لضبط مستوى التجميع في تطبيق Closure Compiler، ضمِّن علامة سطر الأوامر --compilation_level
بقيمة
WHITESPACE_ONLY
أو SIMPLE
أو ADVANCED
، كما في الأمر التالي:
java -jar compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --js hello.js