سرویس کامپایلر بستن منسوخ شده است و حذف خواهد شد. لطفاً به جای آن کامپایلر را به صورت محلی اجرا کنید.
بررسی اجمالی
Closure Compiler Service API دسترسی برنامهریزی شده به کامپایل JavaScript کامپایلر بسته را از طریق یک API مبتنی بر وب فراهم میکند. در حالی که Closure Compiler UI راهی آسان برای استفاده از سرویس کامپایلر از طریق یک فرم ساده در یک صفحه وب به شما می دهد، کپی کردن خروجی از این صفحه وب کارآمدترین راه برای کار نیست. با Closure Compiler Service API، تطبیق پذیری برای ساخت ابزارهای خود و ایجاد جریان کاری خود را به دست می آورید.
این آموزش شما را در فرآیند ارسال جاوا اسکریپت به سرویس Closure Compiler و بازگرداندن خروجی Closure Compiler راهنمایی می کند. این مثال از ابتدایی ترین سطح کامپایلر Closure Compiler استفاده می کند که به سادگی نظرات و فضای خالی را از جاوا اسکریپت شما حذف می کند.
این آموزش فرض می کند که شما با جاوا اسکریپت و HTTP آشنایی اولیه دارید. در حالی که از یک اسکریپت پایتون برای ارسال جاوا اسکریپت به سرویس Closure Compiler استفاده می کند، برای پیروی از این مثال نیازی به دانستن پایتون ندارید.
نحوه ارتباط با API
- پارامترهای درخواست را تعیین کنید
شما با درخواست 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
می خواهد. -
- یک درخواست ارسال به سرویس کامپایلر بسته شدن بدهید
برای دریافت خروجی از سرویس 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
- پارامترها به عنوان یک رشته رمزگذاری شده با URL به روش درخواست HTTPSConnection ارسال می شوند. پس از فراخوانی
مراحل بعدی
برای یادگیری استفاده از سرویس برای دستیابی به فشرده سازی بهتر در یک سناریوی توسعه واقعی تر، به فشرده سازی فایل ها با API ادامه دهید.