קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
ראשי ♦ כללי ♦ React Lazy Load

React Lazy Load

וינר יאיר 24 באוגוסט 2023 אין תגובות

שיעור קצר בReact עם דגש על ביצועים (performance) שאותם תוכלו לשפר עם React Lazy Load. כמו כן יש טכניקות שונות לשיפור ביצועים באפליקציה שתבנו שנדבר עליהם בפוסטים אחרים, הפוסט הזה יתמקד הנושא של lazy loading במעבר בין עמודי האתר השונים.

אז מי שמכיר את ריאקט יודע שמדובר בSPA שזה ראשי התיבות של Single Page Applications. מה שאומר שכברירת מחדל כל הרכיבים של אותה אפליקציה הופכים לקובץ JS שמכיל את כל רכיבי האפליקציה שזה עתה בניתם. אבל זה יכול לגרום לטעינה ראשונית איטית, אפשר כמובן לפתור את זה עם איזה SPEENER חמוד, אבל ברוב המקרים הגולשים יעדיפו מהירות על דברים חמודים ש"מבזבזים" להם את הזמן.

אז ככה זה נראה שאתם מסתכלים ב network:

שימו לב שהתקבל קובץ JS שלקח לנו לטעון 62MS במקרה הזה שכן השתמשתי בlazy

כמו כן אפשר לראות בsource את הקבצים שנטענו:

ניתן לראות שנטענו רק הרכיבים שמוצגים בעמוד זה (ללא רכיבים שקיימים בroute אחר)

ועכשיו אבקש לגשת לroute מסויים ואז נראה מה קורה:

בnetwork נקבל קובץ chunk של JS שהוא אוסף הרכיבים החדשים שהתווספו.

וגם ב source אפשר לראות את הרכיבים החדשים ששייכים לעמוד הספציפי הזה שעדיין לא התווספו לקאש.

כך נראה קובץ index.jsx במיני הפרויקט הזה, והשימוש בlazy:

import React, { lazy, Suspense } from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import {
  createBrowserRouter,
  RouterProvider,
} from "react-router-dom";
import { Outlet } from 'react-router-dom';

const Character = lazy(() => import('./pages/Character'));


const router = createBrowserRouter([
  {
    path: "/",
    element: <App />,
  },
  {
    path: "character/:id",
    element: <Suspense fallback={<div>Loading...</div>}>
      <Character />
    </Suspense>,
  },
]);

const root = ReactDOM.createRoot(document.getElementById('root'));

root.render(
  <React.StrictMode>
    <RouterProvider router={router} />
    <Outlet />
  </React.StrictMode>
);

reportWebVitals();

שורה 12 היא השורה שבה עושים שימוש בlazy. וכמו כן שימוש בלייזי דורש לעטוף את האלמנט של route עם Suspense כמו בשורה 22 .

ללא שימוש בlazy הטעינה של הקבצים תהיה ארוכה יותר

הגולשים יכולים לקבל מסך של שניות ארוכות עד שאפליקציה שלכם תתקמפל. שימו לב בדוגמה הקטנה שלנו מה קורה עם אין lazy

כפי שאפשר לראות כל הקבצים של האפליקציה נטענו כבר בעמוד הראשי.

כמו כן משך זמן הטעינה יהיה ארוך יותר, קשה לראות זאת במיני פרויקט. אבל אתם תוכלו לשים לב לזה גם בגודל הקובץ הJS וגם בזמן הטעינה כמובן.

וכן ברגע שנכנס לראוט מסוים לא התווסף שום קובץ JS חדש כי כל הרכיבים כבר זמינים לנו. כמו כן משך הטעינה של העמודים יהיו ארוכים יותר כמובן כי יתבצע שוב קימפול של קבצים נוספים וטעינתם, אך החלוקה הזו בריאה יותר לחוויה של הגולשים בכך שהטעינה הראשונית מהירה יותר ובשאר העמודים היא תהיה זניחה יחסית (תלוי כמובן בכמות הרכיבים שיש בעמודים האחרים)

לסיכום React Lazy Load

טכניקה פשוטה זו הכרחית בשביל לשפר ביצועים, למעשה היא הטכניקה הכי בסיסית לשיפור ביצועים, וכן כפי שציינתי ישנם עוד טכניקות לשיפור ביצועים שכן דיברתי עליהם בפוסט על React Profiler . ביצועים חשובים מאד בעולם הפיתוח של מתכנתי צד לקוח, ככל שתעמיקו בעולמות של ביצועים כך שיהיו מתכנים טובים יותר כי לרוב הנושא הזה דורש הבנה של ליבת הטכנולוגיה, וכמובן לספק לגולשים חוויה טובה. 🤩🍀

פוסטים קשורים:

ריאקט - React Profilerמודדים ביצועים עם ריאקט – React Profiler מדריך ריאקט – react hooks | useMemo & useCallbackמדריך ריאקט – react hooks | useMemo & useCallback מדריך ריאקט שיעור useContextמדריך ריאקט – react hooks | useContext קורס חינם React & GraphQL – שיעור שלישי – צד שרת Nodejs של המשחק איקס עיגול.קורס חינם React & GraphQL – שיעור שלישי – צד שרת Nodejs של המשחק איקס עיגול.
hooks lazy load reactjs לימוד ריאקט מדריך ריאקט קורס ריאקט ריאקט שיפור ביצועים תקלות בריאקט

אודות המחבר

יאיר וינר להציג את כל הפוסטים של וינר יאיר


« פוסט קודם
פוסט הבא »

השארת תגובה

ביטול

חיפוש באתר
בחירת העורכים
29 בדצמבר 2023 עידן יצחקי

שדה טקסט עשיר עם תמונות

אתם הולכים להיות מופתעים עד כמה HTML יכול להיות חכם ולבצע משהו כל כך מורכב, שאם אנחנו היינו רוצים ליצור

1 באוקטובר 2021 עידן יצחקי

איך למשוך דינמית favicon של אתרים אחרים ב-JS

בפוסט זה נראה איך אפשר על פי לינקים בדף למשוך את ה-favicon מהדומיין שלהם באופן דינמי, בדיקה של תקינות התמונה

פופולרי
Javascript functions – היכרות עם סוגי פונקציות
Javascript
21 בדצמבר 2024 אין תגובות
Nested routing in angular standalone component
Typescript
15 בנובמבר 2024 תגובה אחת
בחרו לפי תגיות
angular blockchain css ethers express front-end fullstack GQL html javascript next js nextjs nodejs react hooks reactjs solidity webgl אנגולר בלוקציין וורדפרס לימודי אנגולר לימודי וורדפרס לימוד ריאקט מדריך front-end מדריך GQL מדריך אנגולר מדריך וורדפרס מדריך חינם react מדריך ריאקט מפתח בלוק מפתח בלוקציין מתכנת front-end מתכנת בלוקציין מתכנת פרונט סולידיטי קורס front end קורס fullstack קורס nextjs קורס אנגולר קורס בלוקציין קורס בלוקציין בחינם קורס סולידיטי קורס ריאקט קורס תכנות קורס תכנות בחינם
סינון על פי קטגוריות
CSS fullstack HTML IIS Javascript nodeJs SEO Typescript אנגולר בלוקציין בניית אתרים וורדפרס חיפוש עבודה כלים נוספים כללי נגישות קורסים ריאקט תלת מימד תקלות ופתרונות
צור קשר
כל הזכויות שמורות לקודקודייל
ליצירת קשר: @ קודקודייל
גלילה לראש העמוד