الاتصال بواجهة برمجة تطبيقات خدمة Closure Compiler Service

تم إيقاف خدمة المحول للتجميع نهائيًا وستتم إزالتها. يُرجى تجربة تشغيل المحول البرمجي محليًا بدلاً من ذلك.

نظرة عامة

توفر واجهة برمجة تطبيقات خدمة Closure Compiler الدخول البرمجي إلى تجميع جافا سكريبت للمؤلف للعارض من خلال واجهة برمجة تطبيقات تستند إلى الويب. وعلى الرغم من أن واجهة برمجة تطبيقات Closure Compiler توفر لك طريقة سهلة لاستخدام خدمة التجميع في نموذج بسيط على صفحة الويب، إلا أن نسخ الناتج من صفحة الويب هذه ليس الطريقة الأكثر فاعلية للعمل. من خلال واجهة برمجة تطبيقات خدمة Closure Compiler، تتمتع بتعدد الاستخدامات لإنشاء أدواتك الخاصة وإنشاء سير عمل خاص بك.

يرشدك هذا البرنامج التعليمي عبر عملية إرسال جافا سكريبت إلى خدمة Closure Compiler والحصول على مخرجات Closure Compiler مرة أخرى. يستخدم المثال المستوى الأساسي من تجميع Closure Compiler الذي يزيل ببساطة التعليقات والمسافة البيضاء من جافا سكريبت.

يفترض هذا البرنامج التعليمي أن لديك معرفة أساسية بجافا سكريبت وHTTP. وعلى الرغم من استخدام النص البرمجي Python لإرسال جافا سكريبت إلى خدمة Closure Compiler، إلا أنه لا يلزمك معرفة Python لاتباع المثال.

كيفية الاتصال بواجهة برمجة التطبيقات

  1. تحديد معلمات الطلب

    تتفاعل مع خدمة 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.

  2. تقديم طلب مشاركة إلى خدمة مقارنة الأسعار

    للحصول على مخرجات من خدمة 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
  3. الخطوات التالية

    وللتعرُّف على كيفية استخدام الخدمة لتحقيق ضغط أفضل في سيناريو أكثر واقعية للتطوير، يمكنك المتابعة إلى ضغط الملفات باستخدام واجهة برمجة التطبيقات.