تم إيقاف خدمة المحول للتجميع نهائيًا وستتم إزالتها. يُرجى تجربة تشغيل المحول البرمجي محليًا بدلاً من ذلك.
نظرة عامة
توفر واجهة برمجة تطبيقات خدمة Closure Compiler الدخول البرمجي إلى تجميع جافا سكريبت للمؤلف للعارض من خلال واجهة برمجة تطبيقات تستند إلى الويب. وعلى الرغم من أن واجهة برمجة تطبيقات Closure Compiler توفر لك طريقة سهلة لاستخدام خدمة التجميع في نموذج بسيط على صفحة الويب، إلا أن نسخ الناتج من صفحة الويب هذه ليس الطريقة الأكثر فاعلية للعمل. من خلال واجهة برمجة تطبيقات خدمة Closure Compiler، تتمتع بتعدد الاستخدامات لإنشاء أدواتك الخاصة وإنشاء سير عمل خاص بك.
يرشدك هذا البرنامج التعليمي عبر عملية إرسال جافا سكريبت إلى خدمة Closure Compiler والحصول على مخرجات Closure Compiler مرة أخرى. يستخدم المثال المستوى الأساسي من تجميع Closure Compiler الذي يزيل ببساطة التعليقات والمسافة البيضاء من جافا سكريبت.
يفترض هذا البرنامج التعليمي أن لديك معرفة أساسية بجافا سكريبت وHTTP. وعلى الرغم من استخدام النص البرمجي Python لإرسال جافا سكريبت إلى خدمة Closure Compiler، إلا أنه لا يلزمك معرفة Python لاتباع المثال.
كيفية الاتصال بواجهة برمجة التطبيقات
- تحديد معلمات الطلب
تتفاعل مع خدمة Closure Compiler من خلال تقديم طلبات HTTP POST إلى خادم Closure Compiler. مع كل طلب يجب إرسال المعلمات التالية على الأقل:
js_code
أوcode_url
-
تشير قيمة هذه المعلمة إلى جافا سكريبت التي تريد تجميعها. يجب تضمين معلمة واحدة على الأقل من هذه المعلمات، ويمكنك تضمين كليهما. يجب أن تكون المعلمة
js_code
سلسلة تحتوي على JavaScript، مثلalert('hello')
. يجب أن تتضمن المعلمةcode_url
عنوان URL لملف JavaScript.js
المتاح عبر HTTP.يمكنك أيضًا تضمين معلمات مصدر مُسماة في النموذج
js_code:path/to/filename.js
. سيتم إنشاء كل ملف في نظام ملفات افتراضي، مما يتيح الوحدات القياسية عبر عبارتيimport
وexport
المدعومة فيECMASCRIPT6
. compilation_level
-
وتوضح قيمة هذه المعلمة درجة الضغط والتحسين لتطبيقها على جافا سكريبت. هناك ثلاثة مستويات محتملة لتجميع البيانات:
WHITESPACE_ONLY
وSIMPLE_OPTIMIZATIONS
وADVANCED_OPTIMIZATIONS
. يستخدم هذا المثال تجميعWHITESPACE_ONLY
، الذي يزيل فقط التعليقات والمسافات البيضاء.المعلمة التلقائية
compilation_level
هي القيمةSIMPLE_OPTIMIZATIONS
. output_info
-
توضح قيمة هذه المعلمة نوع المعلومات التي تريدها من المحول البرمجي. هناك أربعة أنواع محتملة من المخرجات:
compiled_code
وwarnings
وerrors
وstatistics
. يستخدم هذا المثال القيمةcompiled_code
، التي تخبر خدمة Closure Compiler بإخراج النسخة المضغوطة من جافا سكريبت التي تتلقاها في الطلب. output_format
-
تمثّل هذه الخاصية تنسيق مخرجات خدمة Closure Compiler. هناك ثلاثة تنسيقات إخراج محتملة:
text
أوjson
أوxml
. يستخدم هذا المثال القيمةtext
، التي تُخرج نصًا أوليًا.الإعداد التلقائي للمعلمة
output_format
هو القيمةtext
.
لمزيد من المعلومات عن هذه المعلمات المطلوبة والمعلمات الاختيارية الإضافية، راجع مرجع واجهة برمجة التطبيقات.
يرسل المثال في هذا البرنامج التعليمي التمهيدي فقط سطرًا واحدًا من JavaScript الأولية إلى خدمة Closure Compiler، لذلك يستخدم
js_code
بدلاً منcode_url
. ويستخدمcompilation_level
منWHITESPACE_ONLY
ويطلب الحصول على مخرجات نص أولية معoutput_format
منtext
ويطلب نوعoutput_info
منcompiled_code
. -
تقديم طلب مشاركة إلى خدمة مقارنة الأسعار
للحصول على مخرجات من خدمة Closure Compiler، أرسل المعلمات التي تختارها في الخطوة 1 في طلب POST إلى عنوان URL لواجهة برمجة التطبيقات لخدمة Closure Compiler. وتتمثّل إحدى الطرق لإجراء ذلك في استخدام نموذج HTML بسيط مثل النموذج المتوفّر في Hello World of the Closure Compiler Service API.
ولكن لاستخدام نموذج كهذا أثناء التطوير، سيكون عليك نسخ الإخراج من المتصفح ولصقه في ملف .js. وبدلاً من ذلك، إذا كتبت برنامجًا صغيرًا لإرسال الطلب إلى خدمة محول البرمجيات، يمكنك كتابة مخرجات Closure Compiler مباشرة على الملف. على سبيل المثال، يُرسل النص البرمجي python التالي الطلب إلى خدمة Closure Compiler ويكتب الرد:
#!/usr/bin/python2.4 import httplib, urllib, sys # Define the parameters for the POST request and encode them in # a URL-safe format. params = urllib.urlencode([ ('js_code', sys.argv[1]), ('compilation_level', 'WHITESPACE_ONLY'), ('output_format', 'text'), ('output_info', 'compiled_code'), ]) # Always use the following value for the Content-type header. 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()
ملاحظة: لإعادة إنتاج هذا المثال، قد يحتاج مستخدمو Windows إلى تثبيت Python. يمكنك الاطّلاع على الأسئلة الشائعة حول Python Windows للحصول على تعليمات عن كيفية تثبيت Python واستخدامها ضمن Windows.
يحسّن هذا النص البرمجي جافا سكريبت التي يتم تمريرها إليه كوسيطة سطر أوامر. الصق الرمز أعلاه في ملف يُسمى
compile.py
، وغيِّر أذونات الملف لجعله قابلاً للتنفيذ، ونفّذ الأمر التالي:$ python compile.py 'alert("hello");// This comment should be stripped'
يطبع هذا الأمر الرمز المضغوط من استجابة Closure Compiler:
alert("hello");
لأن هذا المثال يستخدم التجميع الأساسي، لا ينفذ المحول البرمجي أي شيء سوى إزالة التعليق.
في ما يلي بعض الأمور التي يجب ملاحظتها بشأن هذا النص البرمجي:
-
يتم تمرير المَعلمات إلى طريقة طلب
HTTPSConnection في شكل سلسلة مرمّزة بعنوان URL. بعد استدعاء
urllib.urlencode
، يحتوي متغير المعلمات على السلسلة التالية:js_code=alert%28%22hello%22%29%3B%2F%2F+This+comment+should+be+stripped&output_info=compiled_code&out=text&compilation_level=WHITESPACE_ONLY
إذا كتبت النص البرمجي الخاص بك، يجب أن ينشر النص البرمجي محتوى مشفّرًا بعنوان URL على هذا النحو. - يجب أن يحتوي الطلب دائمًا على عنوان
Content-type
من السمةapplication/x-www-form-urlencoded
-
يتم تمرير المَعلمات إلى طريقة طلب
HTTPSConnection في شكل سلسلة مرمّزة بعنوان URL. بعد استدعاء
الخطوات التالية
وللتعرُّف على كيفية استخدام الخدمة لتحقيق ضغط أفضل في سيناريو أكثر واقعية للتطوير، يمكنك المتابعة إلى ضغط الملفات باستخدام واجهة برمجة التطبيقات.