PracticU

Guard CanActivate

בלי כתוביותעם כתוביות
PracticU › קורס אנגולר 4 עם Angular - WebAPI › Guard CanActivate
מילון מושגים:
Angular - מסגרת פיתוח של גוגל לבניית יישומי אינטרנט מתקדמים בצד הלקוח, מבוססת TypeScript ורכיבים.
תיקייה - מכל במערכת הקבצים שמשמש לארגון קבצים ותיקיות אחרות בתוך מבנה היררכי.
נתיב - מחרוזת שמתארת את מיקומו של קובץ או תיקייה במערכת הקבצים, או כתובת של משאב בתוך אתר.
ממשק - נקודת מגע בין רכיבים: ממשק משתמש שבו אדם מפעיל תוכנה, או ממשק תכנותי שמגדיר אילו פעולות רכיב אחד חושף לאחר.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
סטייט - המידע על מצבו הנוכחי של רכיב או אפליקציה בזמן נתון, שמשתנה ומשפיע על מה שמוצג.

Guard CanActivate
ההרצאה מציגה שומר ניתוב (Guard) מסוג CanActivate, שבודק לפני מעבר לכתובת חדשות אם מזהה החדשה קיים, ומונע הצגת דף עם שגיאות.
הבעיה
1. מזהה לא קיים: כתובת עם מזהה חדשות שלא קיים, למשל 33, נטענת, והדף מציג שגיאות וחצי תוכן.
יצירת השומר
1. יצירה: בעזרת Angular CLI נוצר קובץ news.guard, ונשמר בתיקייה guard.
2. רישום: השומר נרשם ב-providers של מודול הניתוב. בלי רישום, הסביבה מודיעה שהקובץ נוצר אך לא סופק.
3. חיבור לניתוב: בהגדרת הנתיב מוסיפים את השומר תחת canActivate, כך ש-Angular שואל אותו לפני הניווט.
הלוגיקה
1. ממשק: המחלקה ממשת CanActivate, ומממשת את הפונקציה canActivate, שמקבלת את הנתיב הבא (next) ואת מצב הניווט (state).
2. בדיקה: הפונקציה בודקת אם קיימת חדשה ברשימה שמזהה שלה שווה למזהה שבכתובת. אם כן, מוחזר true.
3. הפניה: אם החדשה לא קיימת, מוחזר false, והמשתמש מועבר לרשימת כל החדשות באמצעות הראוטר.
4. בדיקה מעשית: מזהה 111 מועבר לרשימה, ומזהה קיים נשאר בדף החדשה.
סיכום
בסיום ההרצאה מזהה חדשות לא קיים לא מציג דף עם שגיאות, והשומר משמש כדוגמה לבדיקה לפני ניווט.
השיעור הבא בקורס: Guard CanDeactivate

פרקי ההרצאה: Guard CanActivate

  1. 00:00

    הבעיה: ניתוב לחדשות שאינן קיימות

  2. 00:56

    הגדרת מאפיין CanActivate בניתוב

  3. 01:50

    יצירת Guard חדש עם Angular CLI

  4. 03:03

    רישום ה-Guard במודול ובפרוביידרים

  5. 03:56

    הסבר על מודול הניתובים וה-Guard

  6. 04:30

    הפונקציה canActivate והחזרת ערך בוליאני

תמלול ההרצאה: Guard CanActivate

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

  1. 00:02

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

  2. 00:30

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

  3. 00:52

    לא מקובל עליי שאלה איך להגביל פה את ה-ID לפי מספר החדשות שיש לי בפועל הרי סך הכל זה לינק תקין, 33 הוא תקין, אז אני רוצה למעשה ללכת ל-Routing Module ולהגיד שעל ה-News ID הזה יש מגבלה, ויש פה מאפיין מיוחד שבדיוק פותר לי את הבעיה הזאת שנקראת Can Activate.

  4. 01:14

    המאפיין הזה, Can Activate, אומר לי האם מותר לעבור ל-ID הזה, האם מותר להפעיל את הלינק הזה, וזה מה שאני רוצה לעשות, אני רוצה לעשות את ה-Can Activate הזה, ויש גם Can Deactivate, האם מותר לצאת מהלינק הזה, כשאני בתוך הלינק נמצא האם מותר לי לנווט החוצה אז כן אקטיבייט הזה אם אתם תראו הוא מקבל מערך של בעצם של פונקציה שאמורה להגיד

  5. 01:39

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

  6. 02:05

    אז בואו נעתיק את הסינטקס שלו ונלך ליצור אותו לפי החוקים של אנגולר CLI. איך אנחנו עושים את זה? פותחים את ה-APP, בודקים שיש לנו פה אפ מודול, לוחצים שיפט רייט קליק, פותחים CMD או פאור שייל, כותבים CMD כדי לוודא שאנחנו ב-CMD ואז מכניסים את ה-NG Generate גארד, פה ניתן לו איזשהו שם

  7. 02:27

    יותר נוח ונעשה גם תיקייה ל-guards. אתם יודעים מה, פה יש לנו קומפוננט, עוד מודל פייפ, בואו נעשה תיקייה שנקרא לה guard, ויהיה בפנים use news guard.

  8. 02:39

    והנה הוא יוצר לי news.guard ו-typeScript. יפה מאוד, אני בא לתיקיית guard, מוחק קובץ ספציפיקציות לבדיקה ומשאיר רק את ה-news guard, אז יש לי פה guard בפנים news guard וזה יפה מאוד.

  9. 02:53

    בואו נלך לראות אותו, ושימו לב לעוד משהו חשוב שהוא כתב לי פה. וורנינג, guard is generated but not provided. מה זה אומר?

  10. 03:00

    זה אומר שהוא לא רשם אותו בקובץ של המודול, וזה משהו שאסור לשכוח לעשות. אז בואו נלך לעשות את זה. אנחנו הולכים לקובץ של המודול. איפה הגארד שלנו? פה הגארד שלנו.

  11. 03:12

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

  12. 03:22

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

  13. 03:42

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

  14. 04:03

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

  15. 04:27

    אותו אחרי שאני רושם אני תמיד אוהב לרוץ ולרשום במודול כי אחרת אני פשוט שוכח newsguard מה יש לנו בתוך ה-newsguard הזה יש לנו פונקציה אחת שנקראת canactivate שמקבלת שני פרמטרים שזה next וstate מחזירה בוליאן או observable של בוליאן או promise promise זה כמו observable יותר פשוט זה הכל הסינכרוני או בוליאן רגיל ואם היא

  16. 04:47

    מחזירה הפונקציה הזאת מחזירה true הניווט מצליח אם מחזירה false הניווט לא מצליח יופי זה למעשה ה-can activate זה מה שמריץ הגארד ההוא שיש לנו בתוך המודול הוא מחפש את הפונקציה הזאת כדי לא לשכוח לעשות אותה יש פה implement can

לקורס המלא: קורס אנגולר 4 אונליין עם WebAPI

ההרצאה הקודמת: News Service

ההרצאה הבאה: Guard CanDeactivate

הרצאות קשורות מקורסים אחרים

  • Optionals: The Guard Let statement
  • פריצה של Remote Credentials Guard - עם Meterpreter

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

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