שירות מהדר סגירה יוצא משימוש ויוסר. במקום זאת, מומלץ להפעיל את המהדר באופן מקומי.
סקירה כללית
ממשק ה-API של Clasure Compiler נותן גישה פרוגרמטית ל-Closure Compiler JavaScript, היצע דרך API מבוסס-אינטרנט. ממשק המשתמש של הכלי להסדר חסימות מספק דרך קלה להשתמש בשירות המהדר דרך טופס פשוט בדף אינטרנט, אבל העתקה של הפלט מדף האינטרנט הזה היא לא הדרך היעילה ביותר לעבוד. בעזרת ה-API של Cloud Compiler Service תוכלו ליצור כלים משלכם וליצור תהליך עבודה משלכם.
במדריך הזה נסביר איך לשלוח JavaScript לשירות 'הסגר מסוג סגירה'. לדוגמה, נעשה שימוש ברמה הבסיסית ביותר של מהדר סגירה, שפשוט מסיר תגובות ורווחים מ-JavaScript.
המדריך הזה יוצא מנקודת הנחה שיש לכם היכרות בסיסית עם JavaScript ו-HTTP. הוא משתמש בסקריפט של Python לשליחת JavaScript לשירות Closure Compiler, אבל לא צריך לדעת איך להשתמש ב-Python.
איך לתקשר עם ה-API
- קביעת הפרמטרים של הבקשה
אתם יוצרים אינטראקציה עם שירות 'סגירת קלט' על ידי שליחת בקשות HTTP POST לשרת של מהדקי סגירה. בכל בקשה, עליכם לשלוח לפחות את הפרמטרים הבאים:
js_code
אוcode_url
-
הערך של הפרמטר הזה מציין את ה-JavaScript שברצונכם להדר. עליכם לכלול לפחות אחד מהפרמטרים האלה, ואפשר לכלול את שניהם. הפרמטר
js_code
חייב להיות מחרוזת שמכילה JavaScript, כמוalert('hello')
. הפרמטרcode_url
חייב להכיל את כתובת ה-URL של קובץ JavaScript.js
שזמין ב-HTTP.אפשר גם לכלול פרמטרים מסוג מקור בעל שם בטופס
js_code:path/to/filename.js
. כל קובץ ייווצר במערכת קבצים וירטואלית ויאפשר להשתמש במודולים סטנדרטיים באמצעות ההצהרהimport
וההצהרהexport
שנתמכות ב-ECMASCRIPT6
. compilation_level
-
הערך של הפרמטר הזה מציין את מידת הדחיסה והאופטימיזציה שאפשר ליישם ב-JavaScript. יש שלוש רמות של אוספים:
WHITESPACE_ONLY
,SIMPLE_OPTIMIZATIONS
ו-ADVANCED_OPTIMIZATIONS
. בדוגמה הזו נעשה שימוש באוסףWHITESPACE_ONLY
, שפשוט מסיר תגובות ורווחים.ברירת המחדל לפרמטר
compilation_level
היא הערךSIMPLE_OPTIMIZATIONS
. output_info
-
הערך של הפרמטר הזה מציין את סוג המידע שאתם רוצים להדר. יש ארבעה סוגים אפשריים של פלט:
compiled_code
,warnings
,errors
ו-statistics
. בדוגמה הזו נעשה שימוש בערךcompiled_code
, שמציין לשירות מהדר סגירה כדי ליצור את הגרסה הדחוסה של ה-JavaScript שהוא מקבל בבקשה. output_format
-
הפורמט של הפלט של שירות 'סגירת הכלי לסגירה'. קיימים שלושה פורמטים אפשריים של פלט:
text
,json
אוxml
. בדוגמה הזו נעשה שימוש בערךtext
, שמפיק טקסט גולמי.ערך הפרמטר
output_format
מקבל ערךtext
כברירת מחדל.
למידע נוסף על הפרמטרים הנדרשים האלה ועל פרמטרים אופציונליים נוספים, עיינו בהפניית API.
הדוגמה במדריך המבוא הזה שולחת רק שורה אחת של JavaScript גולמי לשירות Cloud Compiler, ולכן היא משתמשת ב-
js_code
במקום ב-code_url
. הוא משתמש ב-compilation_level
מתוךWHITESPACE_ONLY
, מבקש פלט טקסט גולמי עםoutput_format
שלtext
ומבקש סוג שלoutput_info
מסוגcompiled_code
. -
לשלוח בקשה לפרסום פוסט בשירות חסימות
כדי לקבל פלט משירות Cloud יופיע, שולחים את הפרמטרים שבחרתם בשלב 1 בבקשת POST לכתובת ה-API של Cloud יופיע. אחת הדרכים לעשות זאת היא באמצעות טופס HTML פשוט כמו זה שמופיע ב-Hello World of the Clasure Compiler Service API.
עם זאת, כדי להשתמש בטופס כמו בשלב הפיתוח, צריך להעתיק את הפלט מהדפדפן ולהדביק אותו בקובץ .js אם במקום לכתוב תוכנית קטנה לשליחת הבקשה לשירות 'סגירת אוסף', תוכלו לכתוב את הפלט של מהדר סגירה ישירות לקובץ. לדוגמה, סקריפט ה-python הבא שולח את הבקשה לשירות מהדר סגירה וכותב את התגובה:
#!/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.
הסקריפט הזה מבצע אופטימיזציה של JavaScript שמועבר אליו כארגומנט של שורת פקודה. מדביקים את הקוד שלמעלה בקובץ בשם
compile.py
, משנים את ההרשאות של הקובץ כדי שיהיה אפשר להריץ אותו ומריצים את הפקודה הבאה:$ python compile.py 'alert("hello");// This comment should be stripped'
פקודה זו מדפיסה את הקוד הדחוס מהתגובה של מהדק הסגירה:
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. אחרי הקריאה ל-
השלבים הבאים
כדי ללמוד איך להשתמש בשירות כדי להשיג דחיסה טובה יותר בתרחיש פיתוח מציאותי יותר, המשך אל דחיסת קבצים באמצעות ה-API.