برقراری ارتباط با Closure Compiler Service API

سرویس کامپایلر بستن منسوخ شده است و حذف خواهد شد. لطفاً به جای آن کامپایلر را به صورت محلی اجرا کنید.

بررسی اجمالی

Closure Compiler Service API دسترسی برنامه‌ریزی شده به کامپایل JavaScript کامپایلر بسته را از طریق یک API مبتنی بر وب فراهم می‌کند. در حالی که Closure Compiler UI راهی آسان برای استفاده از سرویس کامپایلر از طریق یک فرم ساده در یک صفحه وب به شما می دهد، کپی کردن خروجی از این صفحه وب کارآمدترین راه برای کار نیست. با Closure Compiler Service API، تطبیق پذیری برای ساخت ابزارهای خود و ایجاد جریان کاری خود را به دست می آورید.

این آموزش شما را در فرآیند ارسال جاوا اسکریپت به سرویس Closure Compiler و بازگرداندن خروجی Closure Compiler راهنمایی می کند. این مثال از ابتدایی ترین سطح کامپایلر Closure Compiler استفاده می کند که به سادگی نظرات و فضای خالی را از جاوا اسکریپت شما حذف می کند.

این آموزش فرض می کند که شما با جاوا اسکریپت و HTTP آشنایی اولیه دارید. در حالی که از یک اسکریپت پایتون برای ارسال جاوا اسکریپت به سرویس Closure Compiler استفاده می کند، برای پیروی از این مثال نیازی به دانستن پایتون ندارید.

نحوه ارتباط با API

  1. پارامترهای درخواست را تعیین کنید

    شما با درخواست HTTP POST به سرور کامپایلر بسته شدن، با سرویس Closure Compiler تعامل دارید. با هر درخواست شما باید حداقل پارامترهای زیر را ارسال کنید:

    js_code یا code_url

    مقدار این پارامتر نشان دهنده جاوا اسکریپتی است که می خواهید کامپایل کنید. شما باید حداقل یکی از این پارامترها را بگنجانید و می توانید هر دو را بگنجانید. پارامتر js_code باید رشته ای باشد که حاوی جاوا اسکریپت باشد، مانند alert('hello') . پارامتر code_url باید حاوی URL یک فایل .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 تعیین می کند.

    برای اطلاعات بیشتر در مورد این پارامترهای مورد نیاز و پارامترهای اختیاری اضافی، به مرجع API مراجعه کنید.

    مثال در این آموزش مقدماتی فقط یک خط جاوا اسکریپت خام را به سرویس Closure Compiler ارسال می کند، بنابراین از js_code به جای code_url استفاده می کند. از یک compilation_level WHITESPACE_ONLY استفاده می کند، خروجی متن خام با فرمت output_format text را درخواست می کند و یک نوع output_info از compiled_code می خواهد.

  2. یک درخواست ارسال به سرویس کامپایلر بسته شدن بدهید

    برای دریافت خروجی از سرویس Closure Compiler، پارامترهایی را که در مرحله 1 در یک درخواست POST انتخاب کردید، به URL API سرویس Closure Compiler ارسال کنید. یکی از راه‌های انجام این کار، استفاده از یک فرم HTML ساده مانند آنچه در Hello World of the Closure Compiler Service API است.

    با این حال، برای استفاده از فرمی مانند این در طول توسعه، باید خروجی را از مرورگر کپی کرده و آن را در فایل js. پیست کنید. اگر در عوض، یک برنامه کوچک برای ارسال درخواست به سرویس Closure Compiler بنویسید، می توانید خروجی Closure Compiler را مستقیماً در یک فایل بنویسید. به عنوان مثال، اسکریپت پایتون زیر درخواست را به سرویس 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()
    

    توجه: برای بازتولید این مثال، کاربران ویندوز ممکن است نیاز به نصب پایتون داشته باشند. برای دستورالعمل‌های نصب و استفاده از پایتون در ویندوز، پرسش‌های متداول پایتون ویندوز را ببینید.

    این اسکریپت جاوا اسکریپت را که به عنوان آرگومان خط فرمان به آن ارسال می شود بهینه می کند. کد بالا را در فایلی به نام compile.py قرار دهید، مجوزهای فایل را تغییر دهید تا قابل اجرا شود و دستور زیر را اجرا کنید:

    $ python compile.py 'alert("hello");// This comment should be stripped'
    

    این دستور کد فشرده شده را از پاسخ Closure Compiler چاپ می کند:

    alert("hello");
    

    از آنجایی که این مثال از کامپایل اولیه استفاده می کند، کامپایلر کاری جز حذف کامنت انجام نمی دهد.

    در اینجا چند نکته در مورد این اسکریپت ذکر شده است:

    • پارامترها به عنوان یک رشته رمزگذاری شده با URL به روش درخواست HTTPSConnection ارسال می شوند. پس از فراخوانی urllib.urlencode ، متغیر params حاوی رشته زیر است:
      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. مراحل بعدی

    برای یادگیری استفاده از سرویس برای دستیابی به فشرده سازی بهتر در یک سناریوی توسعه واقعی تر، به فشرده سازی فایل ها با API ادامه دهید.