PracticU

הסבר על Decorators

בלי כתוביותעם כתוביות
PracticU › קורס ריאקט - React › הסבר על Decorators
מילון מושגים:
TypeScript - שפת תכנות המרחיבה את JavaScript בהוספת טיפוסים, ומתקמפלת ל-JavaScript רגיל.
React - ספריית JavaScript לבניית ממשקי משתמש מבוססי רכיבים, שפותחה על ידי פייסבוק.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
בנאי - מתודה מיוחדת שמופעלת אוטומטית בעת יצירת אובייקט ממחלקה, ומאתחלת את ערכיו ההתחלתיים.
npm - מנהל החבילות של Node.js, המשמש להתקנה ולניהול ספריות JavaScript בפרויקט.
רכיב - יחידת בניין עצמאית וניתנת לשימוש חוזר בתוך מערכת או ממשק משתמש, שאחראית על חלק מוגדר מהתפקוד.
פרמטר - ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.
Java - שפת תכנות עילית ומונחית עצמים, הרצה על מכונה וירטואלית (JVM) ומשמשת לפיתוח מגוון יישומים.

הסבר על Decorators
Decorators הם יכולת של TypeScript, נפוצה למשל ב-Angular ופחות ב-React, ואפשר לשלב אותה גם ב-MobX. ההרצאה מסבירה את הרעיון על דוגמה קטנה שלא קשורה ל-MobX.
איך זה עובד
1. התוכנית לדוגמה: מחלקה בשם Cat עם name ו-age, constructor ופונקציית display. יוצרים שלושה אובייקטים וקוראים לתצוגה שלהם עם npm start.
2. מהו decorator: פונקציה שמגדירים מעל רכיב בקוד: מחלקה, משתנה, פונקציה או חבר במחלקה. היא מופעלת פעם אחת, כשהמחלקה נוצרת לראשונה, ולא בכל יצירת אובייקט.
3. כתיבת הפונקציה: בקובץ decorators.ts מייצאים פונקציה logCreation שמקבלת target מסוג any ומדפיסה שם המחלקה נוצרה, לפי target.name. הפרמטרים תלויים ברכיב שמעליו מניחים אותה, וכאן החתימה מתאימה למחלקות.
4. שימוש: כותבים @logCreation מעל המחלקה Cat. לדברי המרצה המחלקה מקושטת בדקורטור.
5. הוכחה שהוא רץ פעם אחת: הודעת ה-decorator מופיעה פעם אחת, לפני ההדפסות של שלושת האובייקטים. הודעה שמוסיפים ל-constructor מופיעה שלוש פעמים.
6. למה זה שימושי: ספריות ומערכות פנימיות יכולות לקרוא את מה שסימנו בדקורטורים כדי לדעת על מי הוגדרו ולהתנהג בהתאם. אפשר, למשל, לשמור מידע במשתנה גלובלי, ופונקציה אחרת של המערכת קוראת אותו. משתמשים בזה הרבה ב-Angular, וגם בשפות כמו C-Sharp ו-Java.
הגדרות
- ב-tsconfig מוסיפים experimentalDecorators: true. בלי זה TypeScript מציגה שגיאה על השימוש בדקורטורים.
עכשיו אפשר להבין מהו decorator ומתי הוא רץ. בסרטון הבא רואים איך MobX משתמשת בהם.
השיעור הבא בקורס: הדגמה של Decorators

פרקי ההרצאה: הסבר על Decorators

  1. 00:00

    מהם Decorators

  2. 00:38

    תוכנית הדגמה עם מחלקת Cat

  3. 01:34

    בניית קובץ דקורטורים

  4. 02:15

    על מה חל הדקורטור ומתי

  5. 02:52

    בניית פונקציית logCreation

  6. 03:36

    שימוש בדקורטור עם שטרודל

תמלול ההרצאה: הסבר על Decorators

הטקסט המלא של הדקות הראשונות בהרצאה «הסבר על Decorators» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:30

    הדבר הראשון שחשוב לנו להבין זה מה זה Decorators. בניתי כאן איזושהי תוכנית קטנה לא קשורה לתוכנית של הנורת'ווינד שלנו, שכל מה שהתפקיד שלה לעשות זה להבהיר לנו מה זה הדבר הזה שנקרא Decorators.

  3. 00:47

    ומה שבניתי פה זה קלאס בשם Cat מייצגת חתול ויש לו name ו-age. הנה קונסטרקטור, הוא מקבל את ה-name וה-age ושם אותם ב-data members. הנה יש לנו פונקציית דיספליי שפשוט מציגה את הפרטים על המסך, אנחנו מחצינים את ה-CAT מחוץ לקובץ.

  4. 01:08

    יש לנו כאן אפ, יש לנו כאן אפשרות להשתמש עם ה-CAT, יצרתי שלושה אובייקטים וקראתי לדיספליי שלהם. כמובן שהפרויקט הזה זה טייפ סקריפט שאפשר להריץ אותו כאן בקונסול, אני רושם npm start והוא רץ לו ומציג לי, הנה שלושת החתולים על המסך.

  5. 01:32

    מה בעצם קרה כאן? יצרנו שלושה אובייקטים והשתמשנו באובייקטים. על התוכנית הזאת אני רוצה להוסיף משהו שנקרא דקורטור. אני בונה קובץ חדש, אני קורא לו decorators, ברבים TS, כי אפשר להוסיף הרבה דקורטורים.

  6. 01:53

    מה זה דקורטור? דקורטור זאת קודם כל פונקציה. אני מחצין function. הפונקציה הזאת זאת פונקציה שאנחנו מגדירים אותה מעל לאיזשהו אלמנט תכנותי.

  7. 02:12

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

  8. 02:24

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

  9. 02:48

    בואו נבנה פונקציה שנקראת logCreation כי אני רוצה לראות בעצם שהרכיב שמעליו אני שם את הפונקציה נוצר לראשונה. פונקציה לא תחזיר כלום, פונקציות דקורטור מקבלות טארגט, הן יכולות לקבל עוד משתנים אבל אנחנו לא רוצים כרגע לחפור יותר מדי בכל מיני פיצ'רים של דקורטורס אלא להבין את הקונספט הכללי שלהם.

  10. 03:14

    אז נגדיר target any, הטארגט זה בעצם מעל מי שמנו את אותו דקורטור ובואו נציג פשוט קלאס שרשר target.name has been created. Good, זה כל מה שהפונקציה הזאת עשתה.

  11. 03:36

    אנחנו רוצים לבוא ל-cat ולשים מעליה את הדקורטור. איך משתמשים עם דקורטור? על ידי סימן השטרודל log creation. זה אומר שאנחנו עכשיו הגדרנו את הדקורטור הזה.

  12. 03:54

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

  13. 04:11

    אפשר לשים דקורטור כמו שאמרנו מעל כל מיני

לקורס המלא: קורס ריאקט אונליין

ההרצאה הקודמת: הצגת Computed Values ב-MobX

ההרצאה הבאה: הדגמה של Decorators

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס NodeJS