בחודשים האחרונים אני נתקל בלקוחות רבים ששואלים אותי (ויועצים נוספים בקבוצה) "מה זה HTML5?". לעתים השאלה מנוסחת קצת שונה: "האם דפדפן X תומך ב- HTML5?" או "האם כדאי לי לפתח מערכת ב- HTML5?".
הלקוחות האלה, כמו גם מפתחים רבים אחרים, מאוכזבים לשמוע שאין תשובה חד משמעית לשאלות האלו, אך בגלל שהן חוזרות על עצמן שוב ושוב, החלטתי לפרסם את:
מורה הנבוכים ל- HTML5
ונתחיל מהשאלה הבסיסית ביותר:
מהו HTML5?
ובכן, בניגוד למה שחושבים לעתים, HTML5 זו לא טכנולוגיה חדשה שמחליפה את HTML4 או XHTML 1.1. בנוסף, לא כל אתר שמעוצב בצורה מושכת את העין ובשילוב אנימציות מעניינות הוא בהכרח מבוסס HTML5. קיימות לא מעט דוגמאות המוכיחות בדיוק את ההיפך...
אם כך, מהו HTML5?
ההגדרה המדויקת ביותר הינה:
אוסף תגים חדש ב- HTML, בשילוב אלמנטים חדשים ב- CSS3 ויכולות חדשות ב- JavaScript.
אוסף התגים, האלמנטים ויכולות ה- JavaScript החדשות מתרכזים סביב הנושאים הבאים:
- ביצועים
- Semantic Web
- עיצוב
- מדיה
- גרפיקה
- עבודה ב- Offline ואחסון מקומי
- קישוריות
- גישה לחומרה מקומית
כפי שניתן להתרשם מהרשימה, ה- HTML5 תוכנן בעקבות התובנה כי מערכות ה- Web המודרניות הינן אינטראקטיביות הרבה יותר ממה שהיה בשנת 1999, בה נקבע סטנדרט ה- HTML4, וכי דרושות יכולות חדשות ומשמעותיות על מנת שניתן יהיה להצעיד את האינטרנט לדור הבא של המערכות.
במסגרת פוסט זה לא ניתן יהיה לעבור על כל הנושאים האלו, אך להלן מספר דוגמאות:
HTML5 מכיל תגים חדשים ב- HTML ההופכים את הדף לקריא הרבה יותר. למשל, רובכם וודאי מחלקים את דפי ה- Web שלכם באמצעות תגי Div שונים, כאשר כל Div אחראי לאיזור תוכן מסויים, והגדרת האיזור מתבצעת באמצעות ה- id attribute או class attribute.
לדוגמה: <div class=’header’></div>, או <div class=’menu’></div>.
באמצעות HTML5 ניתן להחליף את התגים האלו ב: <header></header>, או <menu></menu>
תגים חדשים אלו מאפשרים בניית דף קריא הרבה יותר (מה שמכונה: Semantic Web), המאפשר גם לתוכנות שונות לקרוא את הדף ולהבין את מבנהו. רשימה מלאה של התגים החדשים ב- HTML5 ניתן לראות כאן.
פינות מעוגלות. ב- Word זה קיים כבר שנים...
אם תשאלו כל מעצב Web מתחיל מהו האלמנט העיצובי החסר ביותר בפיתוח אתרי אינטרנט, תקבלו כנראה את אותה התשובה: פינות מעוגלות!. ובכן, (תופים בבקשה...) כחלק מ- CSS3 התווספה, סוף סוף, היכולת להגדיר פינות מעוגלות!
האלמנט border-radius מאפשר להגדיר את רדיוס עיגול הפינה, ובכך הוא עונה על תפילותיהם של מעצבים מתוסכלים ומפתחים מותשים, שנאלצו למצוא פתרונות עוקפים לבעיה הקרדינלית הזו.
אלמנט זה מתווסף לעוד אלמנטים רבים אחרים שהתווספו ב- CSS3, ומרכיבים ביחד אתו את HTML5.
- אחת היכולות המשמעותיות ביותר בעיני ב- HTML5 היא יכולת ה- Local Storage. יכולת זו מאפשרת, לראשונה, לשמור מידע בתחנת הקצה של המשתמש לאורך זמן, גם לאחר שהדפדפן נסגר. למעשה, נפתחת באמצעות יכולת זו האפשרות לממש Cache של נתונים בדפדפן, באופן שעשוי לשפר את הביצועים בצורה משמעותית.
לעתים אני שומע מלקוחות את התגובה הצוננת הבאה: "על מה כל ההתרגשות? אפשר לעשות אותו דבר ב- cookies כבר שנים!".
יש אמנם קווי דמיון מסויימים בין cookies ו- Local Storage, אולם חשוב לשים לב להבדלים:
- באמצעות Local Storage ניתן לשמור עד 10MB של נתונים, בעוד ש- Cookies מוגבלים ל- KB בודדים.
- ל- Cookies יש תאריך תפוגה, בעוד של- Local Storage אין.
השימוש ב- Local Storage פשוט ביותר:
localStorage[‘person’]=p
הסבר מקיף על השימוש ב- Storage תוכלו למצוא כאן.
זהו, כמובן, רק קצה הקרחון של היכולות החדשות ב- HTML5. מומלץ להתעדכן בשאר היכולות המתקדמות והמסקרנות.
HTML5 - סטנדרט שעוד לא נקבע סופית
אחד הדברים שחשוב להבין לגבי HTML5 הינו שמדובר בסטנדרט שעוד לא נקבע סופית, והוא בתהליכי גיבוש בימים אלה ממש. למעשה, התחזית האופטימית ביותר על מועד גיבושו הסופי של הסטנדרט מדברת על 2014, ורוב שאר התחזיות קובעות את שנת 2020 כתאריך מעשי יותר...
מצב זה מחייב זהירות מסויימת כאשר באים לפתח ב- HTML5, כפי שנראה בהמשך.
סטטוס עדכני של HTML5 ניתן לראות כאן:
http://dev.w3.org/html5/decision-policy/html5-2014-plan.html
אז לאחר שהבנו מהו HTML5, אפשר לעבור לשאלה הבאה, שהיא:
אילו דפדפנים תומכים ב- HTML5?
השאלה הזו, למרות שהיא נראית פשוטה, למעשה אינה כזו.
הגדרנו למעלה ש- HTML5 מורכב מאוסף של יכולות, ולא ממתג אחד בלבד שמפעיל את כולו. בנוסף, ראינו גם שמדובר בסטנדרט בתהליכי גיבוש. מכיוון שכך, לא קיים דפדפן אחד שתומך ב- HTML5 מ- א' ועד ת', וכל דפדפן תומך בסט שונה של יכולות. מטבע הדברים, ככל שגרסת הדפדפן מתקדמת יותר כך גדל סט היכולות הנתמך, אך עדיין יש לבצע בדיקה פרטנית עבור כל דפדפן באילו חלקים של HTML5 הוא תומך.
לאור זאת ניתן לומר כי השאלה לעיל אינה רלוונטית, והשאלה המעניינת באמת הינה:
אילו דפדפנים תומכים ביכולת שמעניינת אותי?
ופה התשובות משתנות מאוד.
לדוגמה, ל- Local Storage שתואר לעיל קיימת תמיכה מ- Internet Explorer 8 ומעלה, ו- Chrome 4 ומעלה.
מצד שני, ה- Application Cache (שמאפשר להפעיל יישומי Web גם כאשר התחנה היא Offline) נתמך ב- Internet Explorer 10 , והתמיכה של Chrome שונה במעט מהסטנדרט הקבוע.
כפי שניתן לראות, לא ניתן ואין טעם לנסות להגדיר דפדפן תומך HTML5. הבדיקה צריכה להיות לפי היכולת שמעניינת אותנו בפיתוח המערכת.
וכעת נגיע לשאלה החשובה באמת:
האם כדאי לפתח מערכת ב- HTML5?
גם במקרה זה, השאלה למעשה אינה השאלה הנכונה. השאלה שבאמת חשוב לשאול היא:
האם כדאי לפתח מערכת שעושה שימוש ביכולת X של HTML5?
הדרך לענות על השאלה הזו, היא באמצעות מענה על השאלות הבאות:
- האם שימוש ביכולת X ישפר משמעותית את המערכת שלי? (בין אם מדובר בהוספת גרפיקה, שימוש ב- Cache מקומי או הצגת פינות מעוגלות)
- האם הדפדפנים הנמצאים בארגון תומכים ביכולת זו? (שימו לב – לא מעניינת אותנו התמיכה ביכולות שאנו לא משתמשים בהן!)
- (שאלה אופציונלית) האם יכולת X כבר הוכרזה כחלק אינטגרלי מהסטנדרט של HTML5?
אם התשובה לשתי השאלות הינה חיובית – קדימה לדרך! אתם יכולים להתחיל לעשות שימוש ביכולות החדשות של HTML5 בביטחון רב יחסית, ולהתחיל להכיר את הדור הבא של יכולות ה- Web.
הפוסט נכתב על ידי ממי לביא, יועץ בכיר וארכיטקט תוכנה בקבוצת MCS במיקרוסופט ישראל. לממי נסיון של יותר מ- 15 שנה בתכנון ומימוש מערכות גדולות ומורכבות בארגוני Enterprise רבים, הפרושות על פני טכנולוגיות רבות, והוא מרצה מבוקש בארגונים רבים בנושאי ארכיטקטורה ופיתוח.