סיון (5)

ליקוטי JavaScript

לפעמים אפליקציות צריכות לעשות מניפולציה על תאריכים וזמנים. למשל: לדעת כמה ימים יש בחודש מסוים, לחשב הפרש בין שני תאריכים. נראה שמצד הקוד בצד השרת אפשר לבצע את המניפלוציות האלה, אבל לפעמים אנחנו צריכים לבצע אותם כבר בשלב ה-client. כלומר, יש צורך בפונקציות JavaScript שתטפלנה בנושאים הללו. אך אובייקט ה-Date ב-JS אינו מכיל פונקציות לכל החישובים האלה. פתרון אחד יכול להיות לכתוב פונקציות באפליקציה שלנו שתחשבנה את החישובים האלה. אבל פתרון יותר מערכתי יהיה להרחיב את אובייקט הData של JS – זה גם הופך את הקוד ליותר קריא, ובכלל יש בזה כל היתרונות של תכנות מונחה עצמים.
המאמר הבא מתאר איך לייצר פונקציות שעושות את המניפולציות דלעיל, וגם: איך להוסיף ימים לתאריך מסוים, איך להציג את שמות הימים במילים, ועוד. אפשר להעתיק משם את מה שצריך, או פשוט להוריד קובץ JS עם כל המתודות המתוארות במאמר.
עוד מאמר המתייחס לתכנות JavaScript מדבר על כך שאוסף אינו מערך (A collection is not an array). מחבר המאמר מצר על כך שאוסף אלמנטי ה-DOM (הידועים גם בכינויים NodeList) מהווים אוסף ולא מערך, למרות שמכתנתים מתחילים לפעמים טועים ומתייחסים אליהם כמערך. הנקודה היא שאפשר להפוך אוסף למערך, והמחבר מראה קוד קצר ונעים לקריאה שעושה את הפונקציה הזו. רק צריך לזכור שכשהופכים את ה-Nodelist למערך, מאבדים את המאפיינים של אוסף, אבל זה לא ממש משמעותי (הסבר במאמר), וגם מאבדים את ה”חיות” של ה-Nodelist. ה-Nodelist מתעדכן לפי השינויים המתרחשים ב-DOM, ואילו המערך מהווה הנצחה של מצב מסוים של ה-DOM ללא יכולת עדכון.
המאמר האחרון שאדבר עליו בפוסט הזה מדבר על טכניקה לשיפור בביצועי דף ה-HTML בעזרת Lazy Loader. כידוע, רווחות היום ספריות JS לרוב – כמו Prototype, Dojo, YUI ואחרות – המציעות מגוון חוויות משתמש עשירות. למרבה הצער, מי שמשלמים את המחיר הם המשתמשים. כל קובץ JavaScript שיש לטעון לדף מהווה קשר חדש לשרת, כל קשר חדש כזה משמעותו עוד מידע, וכל זה קורה לפני שהמשתמש בכלל רואה את הדף. למרבה השמחה יש דרך טובה יותר לבצע דברים, והיא – טעינת חלקים של הדף רק כשהמשתמש מבקש אותם. המטרה היא לדחות טעינת קבצי JS עד שצריכים אותם. לדעת המחבר, Lazy loading הוא יישום פרקטי של ה- Proxy Design Pattern . במאמר יש שלוש הדגמות של יישום ה-Lazy loader: אחד יישום עצמאי, כלומר כל קוד ה-JS שצריך להכתב כדי ליישם את השיטה הזו; יישום בעזרת ספריית Dojo; ויישום בעזרת YUI. המחבר מסיים בכמה אזהרות על חסרונות.

2 תגובות על “ליקוטי JavaScript

  1. עצלן אוהב עצלן

    כיוון שאני עצלן (אולי גם אנשים אחרים ?) מייד נמשכתי לפסקה בה הצגת את הטכניקה לשיפור עצלן של טעינת דף 🙂

    מעניין מאוד ושימושי !
    אגב, שימוש בדפדפן שועל האש בגירסה 3 מעלה את מהירות התגובה של שימוש מהן זה.
    נסי וגלי בעצמך עם דפדפנים שונים העומדים לרשותך (אל תאמיני לי ! )

    בבדיקה מסוג sunspider

    בברכה,
    נדב 🙂

    1. עצלנים יעילים

      יש אימרה שאומרת משהו כמו: אם אתה רוצה שעבודה תיעשה באופן יעיל, תן אותה לאיש עצלן :-).
      אני מאמינה שה”עצלות” שלך היא כזו, וזה מצוין. וגם אני מאד אהבתי את הטכניקה שבה משתמש ה-lazy loader.

      לגבי פיירפוקס3, אני מוכרחה להודות שאני ההר, ואני עדיין מחכה שמוחמד יבוא אלי. אולי אתה יכול להסביר לי למה פיירפוקס לא משדרג את עצמו אוטומטית לגרסה 3 (ולהפך, השבוע קיבלתי הודעת פיירפוקס שאני משודרגת לגרסת 2.0.0.15), ומצפה שאני, ההר, אטריח את עצמי אליו? שיחפש אותי…

כתבו תגובה

כתובת הדוא"ל שלכם לא תוצג.