مستويات تجميع محتويات مجمّعة للتجميع

تتيح لك أداة 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