תכנות לחלונות 8 – מבוא ל WinJS

17 בדצמבר 2011

תגיות: , , , , , ,
תגובה אחת

פוסט זה הוא חלק מסדרת הפוסטים “תכנות לחלונות 8 בHTML5”.

 

מה זה WinJS ?

הספריה החשובה ביותר בתכנות לחלונות 8 נקראת WinJS וחלק גדול מהפוסטים הקרובים יתמקדו בה.
הרוב המוחלט של ה-Patterns ב-WinJS יראה מאוד מוכר למתכנתי ג’אווה סקריפט מיומנים, ולמעשה אפשר לומר ש-WinJS כוללת בתוכה פונקציונליות מקבילה לשלוש ספריות מוכרות (או המקבילות שלהן):

1. ספריית Utilities (כגון- jQuery) – הספרייה שלמעשה הפכה לכמעט סטנדרט, מאפשרת לבחור אלמנטים ב-DOM ולפעול עליהם, ומספקת לא מעט מתודות עזר כלליות כגון עבודה עם Ajax.
WinJS מספק יכולות מאוד דומות, בכמה הבדלים, שהראשון שבהם הוא ש-jQuery יודע לעבוד עם כל דפדפן, גם עם דפדפנים מאוד ישנים, בעוד WinJS מכיל קוד שאמור לרוץ רק על IE10 ומעלה, ולפיכך יכול להשתמש ביכולות המתקדמות של HTML5 ושל ECMA Script 5. זה הופך את הקוד של WinJS לפיכך ליותר יעיל. כמובן שאין שום מניעה להשתמש ב-jQuery אם רוצים כפי שנראה בפוסט עתידי, אבל בד”כ לא ממש נצטרך.

2. ספריית קונטרולים (כגון jQueryUI) – הכח הגדול של jQuery בא לידי ביטוי מלא ביכולות ההרחבה הכל כך חזקות שלה – היכולת לכתוב פלאגינים. ספריית הפלאגינים הכי נפוצה ופופולארית – jQueryUI – מספקת תמיכה להרבה קונטרולים מתוחכמים שלא קיימים בHTML רגיל, כגון אקורדיון, קונטרול תאריך, וכו’.
גם כאן, WinJS מאפשרת עבודה עם הרבה קונטרולים נוספים, בארכיטקטורה שמאוד מזכירה את jQueryUI, עד גבול מסויים. הרבה מאוד Design Patterns שמוצאים בjQueryUI, ולמעשה בכל פלאגין של jQuery, נמצא גם כאן, ורוב הזמן נרגיש די בבית.
למרות זאת, ישנם מקומות בהם מיקרוסופט בחרה לממש דברים בצורה קצת שונה, על מנת לספק תמיכה יותר טובה לכלי פיתוח כגון Visual Studio ו Blend. כפי שנראה בהמשך, המימוש השונה הזה פותח פתח לפתירת הבעיה החמורה ביותר שיש לקונטרולים של ג’אווה סקרפיט.

3. ספריית Data Binding (כגון KnockoutJS) – למי שלא מכיר, Knockout היא תשתית ל DataBinding בג’אווה סקריפט, כך שאפשר להגדיר אובייקט בג’אווה סקריפט, להגדיר HTML שקשור אליו ע”י DataBinding, ולקבל סינכרון מלא בין ה HTML לבין האובייקטים שלנו. זו תשתית נפלאה המאפשרת לממש הלכה למעשה את ארכיטקטורת MVVM (כמו MVC על סטרואידים) בHTML. ארכיטקטורת MVVM היא למעשה הסטנדרט דה-פקטו של אפליקציות ב-WPF ובסילברלייט, ו-KnockoutJS מאפשר לנו לממש את זה גם בHTML. באפליקציות גדולות זה סופר משמעותי. (יש לא מעט ספריות מקבילות כדוגמת Backbone וכו’)
גם ב-WinJS ישנה תמיכה ב Data Binding, שנראית ומתנהגת מאוד דומה לKnockoutJS, כפי שנראה בהמשך. זה לא כל כך מפתיע בהתחשב בזה שהיוצר של Knockout JS – סטיבן סנדרסון – הוא עובד מיקרוסופט.
מי שעובד הרבה בג’אווה סקפריט ועדיין לא מכיר את KnockoutJS – כל הפוסט הזה שווה את הזמן שלכם ולו בשביל זה. שווה לבדוק את אתר הבית, ועוד יותר שווה לבדוק את האתר הלימודי היפהפה וללמוד את כל הספרייה בפחות מיום.

שלושת הספריות הנ”ל מספקות תמיכה לרוב הפיצ’רים שמתכנתי ג’אווה סקריפט מיומנים התרגלו אליהם, אם כי כמובן יש רבות אחרות על אותה משבצת, והדוגמאות שהבאתי הן פשוט הספריות בהן אני משתמש הכי הרבה. אפשר לפתח עם WinJS ואפשר לפתח עם ספריות צד שלישי סטנדרטיות –זה תלוי בהעדפה האישית למרות שזה לא באמת משנה יותר מדי – ה-Design Patterns מאוד דומים.
יחד עם זאת, פיתוח בWinJS יאפשר לנו יצירת אפליקציות שנראות ומתנהגות כמו אפליקציות Metro בהרבה פחות מאמץ. בהרבה מובנים פיתוח לחלונות 8 זה ללמוד את WinJS.

ג’אווה סקריפט היא שפה עם מעט מאוד פיצ’רים, שאפשר לעשות בה הרבה מאוד. למרות שאין תמיכה רגילה במחלקות, מאפיינים למחלקות, מרחבי שמות, ציבורי/פרטי, ירושה וכו’ (classes, properties, namespaces, public/private, inheritance) בפועל אפשר לממש את כל הדברים הללו ע”י שימוש ב-Design Patterns שהופכים לאט לאט לסטנדרט. כל מפתח #C או כל שפה עילית מודרנית אחרת שלומד ג’אווה סקריפט יופתע לגלות שאפשר “לזייף” את כל זה עם ג’אווה סקרפיט.
כל פלאגין טוב של jQuery מממש למעשה את כל היכולות הללו. הבעיה היא שבמידה ושוכחים חלק מסויים ב- Patterns הללו אפשר ליצור בעיות מסוגים שונים, וגם כאן WinJS בא לעזרתינו:

4. סטנדרדיציה של Design Pattens בג’אווה סקרפיט – WinJS מכיל לא מעט מחלקות עזר העוזרות לממש את ה Design Pattens הנ”ל בצורה קונסיסטנטית וקלה יותר. במובן הזה נראה לי שהספרייה הזו עושה משהו ששום ספרייה אחרת לא עושה היום, אם כי יכול להיות שאני טועה היות ואני לא ממש מכיר את כולן. במובן הזה מיקרוסופט פשוט חושפים עבורנו את הדרך בה צוותי הפיתוח שלהם מסדרים את הקוד שלהם, ומעניין לראות כמה מהקוד הזה יהפוך להיות סטנדרט.
במאבק בין לתקן את ג’אווה סקריפט לבין להחליף את ג’אווה סקריפט – מיקרוסופט בפירוש לוקחים את הצד של לתקן את ג’אווה סקריפט – רעיון שאני קצת סקפטי לגביו אם כי חוץ מגוגל (dart) כולם הולכים לכיוונו. כך או כך זהו צעד משמעותי מאוד לקראת סטנדרדיזציה של Design Patterns קריטיים בג’אווה סקריפט.

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

תגובה אחת

  1. אילן פרח16 בספטמבר 2012 ב 13:16

    קורס פיתוח אפליקציות עם Javascript MVC פריימוורק מתוכנן להתחיל אחרי החגים.

    פרטים נוספים באתר – http://backbonecourse.blogspot.co.il

    הגב