PracticU

טיפול בשגיאות צד לקוח

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › טיפול בשגיאות צד לקוח
מילון מושגים:
צד לקוח - החלק של היישום שרץ בדפדפן ומולו המשתמש מתקשר, הכולל את התצוגה והאינטראקציה.
טופס - אזור בממשק שבו המשתמש מזין נתונים בשדות ושולח אותם, למשל טופס הרשמה או התחברות.
JavaScript - שפת תכנות שרצה בעיקר בדפדפן ומוסיפה אינטראקטיביות לדפי אינטרנט. רצה גם בצד השרת באמצעות Node.js.
קונטרולר - רכיב שמתווך בין הממשק לבין הלוגיקה והנתונים, מקבל בקשות ומחליט כיצד לטפל בהן (למשל בדפוס MVC).
POST - שיטת HTTP לשליחת נתונים לשרת כדי ליצור או לעדכן משאב, למשל שליחת טופס.
מאפיין - תכונה שמצמידים לרכיב ומתארת אותו או את התנהגותו, למשל מאפיין של תגית HTML או שדה באובייקט.
אופרטור - סימן בקוד שמבצע פעולה על ערכים, כמו חיבור, השוואה או פעולה לוגית.
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.

טיפול בשגיאות צד לקוח
ההרצאה מטפלת בשגיאות ולידציה של הלקוח בטופס הוספת מוצר: השרת בודק את הקלט, מחזיר את אותו דף עם הנתונים שהוזנו, ומציג את הודעות השגיאה ב-partial ייעודי.
מה עושים
1. ולידציה בשרת ובלקוח: תמיד בודקים בשני הצדדים. הבדיקה בשרת חשובה יותר, כי האקרים יכולים לעקוף את בדיקות הלקוח. הבדיקה בלקוח, ב-JavaScript, חוסכת עבודה ופניות לשרת. ההרצאה עוסקת רק בצד השרת.
2. בדיקה בקונטרולר: ב-POST של ההוספה קוראים ל-product.validatePost ומקבלים אובייקט שגיאות. אם יש שגיאות, מבצעים render לאותו דף products/create (בלי redirect) ומעבירים גם את המוצר וגם את errors.
3. שמירת הנתונים בטופס: אחרי render מחדש תיבות הטקסט התרוקנו. לכן מוסיפים לכל input מאפיין value, עם אופרטור טרינרי: אם typeof product הוא undefined (הדף נטען לראשונה) מציגים מחרוזת ריקה, אחרת את השם, המחיר או המלאי של המוצר.
4. partial לשגיאות: משכפלים את partial שגיאות השרת ל-client-errors.ejs. אם typeof errors שונה מ-undefined, מציגים פסקה בקלאס error עם "please correct the following", ורשימה לא ממוינת. לולאת for (const err of errors) מוסיפה פריט רשימה לכל שגיאה.
5. שילוב בדף: מוסיפים include של ה-partial ב-create.ejs.
6. בדיקה: מזינים שם "Pitch" עם מחיר ומלאי שליליים. מופיעות הודעות ששמגיעות מ-Joi (למשל שם באורך מינימלי ובאות גדולה, ומחיר ומלאי לא קטנים מאפס), הנתונים נשארים בטופס, ואחרי תיקון המוצר נוסף.
שימו לב
הודעות שנוצרו ב-Joi והודעות שנכתבו ידנית שונות בסגנון. כדאי לאחד אותן, או לתת ל-Joi לתרגם את כולן.
אפשר עכשיו להציג למשתמש את שגיאות הקלט ולהשאיר בטופס את מה שכבר מילא.
השיעור הבא בקורס: עריכה ועדכון של מוצר קיים בנוד NodeJS

פרקי ההרצאה: טיפול בשגיאות צד לקוח

  1. 00:00

    ולידציה בשרת ובקליינט

  2. 00:58

    בדיקת validatePost בשרת

  3. 01:40

    החזרת המוצר והשגיאות לדף

  4. 02:31

    בדיקה עם ערכים שגויים

  5. 03:12

    שמירת הערכים בטופס עם value

  6. 03:49

    אופרטור טרינרי לבדיקת המוצר

  7. 05:09

    בדיקה חוזרת של הטופס

  8. 05:46

    partial view להצגת השגיאות

תמלול ההרצאה: טיפול בשגיאות צד לקוח

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

  1. 00:03

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

  2. 00:17

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

  3. 00:31

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

  4. 00:44

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

  5. 00:52

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

  6. 01:05

    מה שאנחנו צריכים לעשות קודם כל זה את כל המנגנון של הוולידציה שתמיד עשינו עם ג'וי אנחנו מבצעים פה errors = product.validatePost הנה יש לנו את הוולידציה אם יש שגיאות מה שאנחנו רוצים לעשות response.render אנחנו רוצים שוב פעם לתת לו את אותו הדף שבו הוא רואה סלאש קרייט, אנחנו לא רוצים להעביר אותו לדף אחר,

  7. 01:41

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

  8. 01:52

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

  9. 02:09

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

  10. 02:25

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

  11. 02:40

    אנחנו רוצים לחזור to create a new product ולתת פה הודעות שגיאה, נניח name אנחנו רוצים green apple וprice אנחנו רוצים מינוס 30 ו-stock אנחנו רוצים מינוס 100 וכמובן שגיאות בואו נעשה add לא חייבים לספק תמונה תמיד נבצע add ואנחנו חוזרים לאותו הדף אבל המידע שהיה בתיבות

  12. 03:07

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

  13. 03:26

    וכאן אנחנו רוצים לעבור שנייה ל-server side ולעשות פה השמה של ה-value הקודם. אבל יכול להיות שיש לנו value ויכול להיות שאין לנו value.

  14. 03:39

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

  15. 03:49

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

  16. 04:18

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

  17. 04:56

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

  18. 05:16

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

  19. 05:29

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

  20. 05:42

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

  21. 05:57

    את זה אנחנו עושים ו- partial view נוסף שכמו שיש לנו server errors בואו נשכפל את זה ל- client errors כאן בגלל שזה partial אנחנו רוצים לשתול אותו בתוך אז ניפטר רגע מכל התוכן הזה ונבנה

לקורס המלא: קורס NodeJS אונליין בעברית

ההרצאה הקודמת: הוספת מוצר חדש

ההרצאה הבאה: עריכה ועדכון של מוצר קיים בנוד NodeJS

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

  • צד לקוח
  • טיפול בשגיאות - Exception Handling
  • Error Handling - טיפול בשגיאות
  • טיפול בשגיאות בצד שרת - Exceptions

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

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