
F12 רואים שאחרי הטעינה הראשונה מעבר בין הראוטים לא מביא שום דבר מהשרת, כי הכול כבר בצד הלקוח. אבל אם יש אזור של ספקים או של אדמין, כולם יקבלו אותו בטעינה הראשונה וזה מאט אותה.react-loadable ואת @types/react-loadable ומייבאים Loadable מ-react-loadable.Contact Us מוחקים את ה-import הרגיל של הקומפוננטה ואת השימוש הישיר בה. ב-component של הראוט קוראים ל-Loadable עם אובייקט שיש בו שני דברים: loader, פונקציית חץ שמחזירה import של נתיב הקובץ, ו-loading, שמגדיר מה להציג עד שהקומפוננטה מגיעה. בינתיים אפשר להניח שם React.Fragment, וההודעה תיבנה בסרטון הבא.Contact Us, וזה נמשך קצת יותר זמן.index.html מחדש, אלא מביא ברקע קובצי JavaScript ו-CSS של הקומפוננטה.react-loadable.הטקסט המלא של הדקות הראשונות בהרצאה «טעינה עצלה ריאקט - Lazy Loading React» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
הדבר הבא שאנחנו הולכים לראות שקשור למנגנון הראוטינג שייך לפרפורמנס. בואו נסתכל רגע על משהו מעניין שקיים כאן. נפתח F12 וב-F12 ניגש לחלונית הנטוורק, הנה היא כאן, ובחלונית הנטוורק אנחנו רוצים לראות מה בעצם הנתונים שהאתר הזה מביא מהבאק-אנד ולצורך כך ניגש לכאן ונלחץ אנטר בכדי שהאתר כאילו יטען מחדש ואנחנו רואים שיש לנו גלישה לשרת, החזרת כל האתר כמובן
ואלה כל הקבצים שהפרונט-אנד בעצם קיבל מהבאק-אנד. הנה אנחנו רואים את התמונה של הלוגו פה, הנה אנחנו רואים פה את השיר mp3 שהבאנו, הנה אנחנו רואים פה את הפאביקון, האייקון הזה הקטן שהגיע, יש לנו פה כמובן ג'אווה סקריפט ויש לנו כאן כמובן את ה-css וכולי, אבל האתר בגלל שהוא single page application אז הוא הביא את כל מה שקיים
באתר בפעם הראשונה, בתאנה הראשונה של האתר. זאת אומרת אם אנחנו עכשיו הולכים לפרודקס לדוגמה, אנחנו לא רואים שום פעילות בנטוורק ואם אנחנו הולכים לספורט אנחנו שוב לא רואים שום דבר שקרה בנטוורק וקונטקט אס שום דבר למה אנחנו בעצם לא רואים שהפרונט אנד מקבל שום דבר מהבאק אנד או מבקש משהו מהבאק אנד
מפני שכל ה-JavaScript וכל ה-CSS כבר נטענו לפרונט וכל מה שהפרונט עושה זה רק מציג אותם אוקיי נראה הגיוני וזה בעצם התנהגות של סינגל פייג' אפליקיישן אבל רגע רגע רגע מה קורה אם יש לנו איזשהו קומפוננט שאנחנו אומרים לעצמנו רגע זה קומפוננט שהוא יחסית נדיר לצפייה לא הרבה משתמשים בעצם יגיעו
בכלל לקומפוננט הזה וירצו לראות אותו או יש לנו אזור שלם במערכת שהוא בכלל לא מיועד לכל היוזרים אולי יש לנו אזור ששייך לספקים ורק אם אתה ספק ואתה רשום כספק אתה בכלל צריך לקבל את מכלול הקומפוננטות ששייכות לספקים.
אולי יש לנו קומפוננטות ששייכות, או אזור ששייך רק לאדמיניסטרטור של האתר, לאדמין, איש האדמין שלנו, רק אם אתה אדמין ואולי יש אחד, שניים כאלה, אנחנו בכלל רוצים להביא לך את המידע הזה, את הקומפוננטות, כלומר את ה-JavaScript שלהם ואת ה-CSS שלהם.
אם אנחנו לא נבצע את זה, אז כל האתר, כולל כל הקומפוננטות, גם של האדמין וגם של הספקים וכל קומפוננטה אחרת, תטען בגלישה הראשונית לאתר שלנו, וזה יכול לגרום לגלישה הראשונית לאתר להיות מאוד איטית.
בעצם מה שקרה כאן זה שהאתר הלך בגלישה הראשונית והביא את כל ה-UI ואת כל ה-JavaScript ואת כל ה-CSS ובעצם את כל הקומפוננטות, גם אם סביר להניח שרוב היוזרים לא ירצו לראות קומפוננטות מסוימות.
אנחנו רוצים לטפל באישו הזה והטיפול הזה נקרא Lazy Loading. Lazy Loading זה מצב שבו אנחנו אומרים רגע יש לנו פה איזושהי קומפוננטה וואלה לא לא לא הייתי מביא אותה על התאנה הראשונית אם היוזר ירצה לראות אותה אז רק ניגש ונביא זאת אומרת היא נטענת בצורת ליזי היא לא נטענת בתאנה הראשונית של האתר.
למה זה קשור למנגנון הראוטינג? בגלל שהקומפוננטה מוצגת רק אם גולשים לראוט, ולכן אנחנו רוצים להגדיר במנגנון הראוטינג לא להביא את הקומפוננטה הזאת בצורה דיפולטית, כלומר בטעינה הראשונית של האתר, אלא רק אם באמת היוזר גולש לאותו הראוט, אז אנחנו רוצים לגשת ולהביא אותה.
בואו נגיד שאת ה-contact us אנחנו רוצים לטעון בצורת lazy loading. איך אנחנו יכולים לעשות את זה? בואו ניגש בחזרה לאתר שלנו.
לצורך כך אנחנו צריכים להתקין ספרייה. אז אנחנו רוצים להתקין את npm-i והספרייה הזאת נקראת react-loadable. זה לא קיים built-in, אנחנו צריכים לגשת ולהתקין את זה, איזשהו package ליתר דיוק מאשר ספרייה.
הדבר הזה מגיע גם עם הטייפים ואנחנו צריכים גם טייפs /react-loadable אותו הדבר שיש לנו פה react-loadable יש לנו גם פה react-loadable זאת הספרייה שאנחנו רוצים להתקין זה בעצם שתי חבילות כאלה שני פאקג'ים בואו נתקין את זה ואחרי שזה מותקן אנחנו יכולים לשלב את זה כאן במנגנון הראוטינג מנגנון הראוטינג
basically בא ואומר בנוגע לקונטקט אס אם היוזר גולש לראוט קונטקט אס אז נא להציג מיידית את הקומפוננט קונטקט אס וזה אומר שהקומפוננט הזה הוא נטען או חייב להיטען בטעינה הראשונית של האתר מפני שכבר בטעינה הראשונית שקוראים את מנגנון הראוטינג הוא צריך להכיר את הקומפוננטה הזאת כי הנה אנחנו רואים
שיש בה שימוש כביכול אנחנו רוצים להפוך את הדבר הזה ל-Lazy loading בואו רגע את זה נשכפל נשים את זה בהערה ואחר כך נמחק אותו ואנחנו רוצים לבוא ולהגיד רגע אנחנו לא רוצים את הקומפוננטה הזאת פה אסור לנו למעשה לבצע שום שימוש בקומפוננטה Contact us בצורה כזאת של Hardcoded בצורה של שימוש בקומפוננטה אני אפילו הוא מוחק אותה מכאן.
אנחנו כאן קוראים לפונקציה שנקראת לואודאבל ואני רואה שהוא לא מגלה לי אותה. הפונקציה הזאת צריכה להגיע, למה הוא לא מגלה לי את לואודאבל? אולי הבלון יגלה אותה?
לא. טוב, בואו נוסיף את זה בעצמנו. יש מקרים כאלה שהמערכת לא מצליחה לזהות הכל. אימפורט לואודאבל פרום ריאקט מקף לואודאבל. פה הוא צריך להכיר אותה, אני אעלה את זה אולי טיפה למעלה בצורה כזאת וloadable עכשיו זאת פונקציה שמקבלת אובייקט ואנחנו אומרים באובייקט שני דברים, אנחנו מתארים שני דברים עבור
אותו אובייקט. דבר ראשון, אולי נעשה את זה כאן, זה לורדר, לורדר זאת פונקציה שאנחנו קוראים לה בצורה כזאת פונקציית אירו, אני משתמש באירו, שאומרת, תן לי בעצם איזה קומפוננטה בדיוק אתה רוצה שאני אטען כלייזי לורדינג.
זאת אומרת, רק אם הראוט הזה ייכנס לתוקף, זאת אומרת, היוזר יגלוש אליו, לא משנה אם בתפריט יגלוש אליו או בכל דרך אחרת, ירשום בעצמו בדפדפן, הפונקציה הזאת תיכנס לפעולה ותחפש או תבקש מהבאק-אנד את הקומפוננטה.