PracticU

יצירת עמוד עבור המוצר

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

יצירת עמוד עבור המוצר
ההרצאה בונה את דף המוצרים: קונטרולר חדש שמביא את כל המוצרים ממסד הנתונים, ותבנית EJS שמציגה אותם בטבלה באמצעות לולאה שרצה בצד השרת.
השלבים העיקריים
1. קונטרולר חדש: יוצרים את products-controller.js, מביאים אליו express, את ה-products logic ואת מודל המוצר, בונים express.Router וחושפים אותו עם module.exports.
2. ראוט לרשימה: מוסיפים router.get לנתיב /list, עם פונקציה אסינכרונית ו-try/catch. בינתיים ב-catch רק מדפיסים את השגיאה. הטיפול בשגיאות מול הלקוח יגיע בהמשך. בתוך ה-try מביאים את המוצרים עם await ל-getAllProductsAsync ועושים render של products/list, עם המוצרים כמשתנה.
3. שיטת עבודה: זו אינה שירות restful. המשתמש גולש לדף ומקבל דף HTML מוכן, שנבנה בשרת. אם היה שירות restful, אפשר היה להביא את המוצרים ממנו.
4. חיבור ב-app.js: משכפלים את שורת ה-use ורושמים שגלישה ל-/products מועברת ל-products controller. הנתיב בקונטרולר יחסי, ולכן הכתובת המלאה היא /products/list.
5. הדף עצמו: יוצרים list.ejs בתיקיית products על בסיס דף הבית. ה-include של header ו-footer צריכים לעלות תיקייה אחת ולהגיע ל-layout. מוסיפים H2 שמציג את מספר המוצרים דרך length של המשתנה, וכך מוצג למשל 77 מוצרים.
6. הטבלה והלולאה: בטבלה יש thead עם עמודות שם, מחיר וכמות במלאי (ה-ID לא מוצג) ו-tbody. בתוכו כותבים לולאת for (const p of products) בתגית צד-שרת, פותחים ב-TR ומשתילים TD עם p.name, p.price ו-p.stock. חוזרים לצד הלקוח בכתיבת תגית HTML רגילה, ולצד השרת בתגית עם אחוז.
7. עיצוב: מרכזים את הטבלה, נותנים לטבלה, ל-th ול-td גבול 1px solid blue, ומיישרים את התא הראשון לשמאל.
שימו לב
EJS (embedded JavaScript) מריץ את הלולאה בשרת, בונה את הדף ומחזיר אותו ללקוח כ-HTML רגיל.
אפשר עכשיו לבנות דף שמציג רשימה ממסד נתונים בטבלה, מקונטרולר ועד תבנית.
השיעור הבא בקורס: הוספת תמונה למוצר

פרקי ההרצאה: יצירת עמוד עבור המוצר

  1. 00:00

    הצגת המוצרים מהדאטאבייס בטבלה

  2. 00:47

    ייבוא הלוגיקה, המודל והראוטר

  3. 01:27

    ראוט get עם try catch

  4. 02:34

    רנדור רשימת המוצרים

  5. 03:14

    דפי שרת לעומת Restful Service

  6. 04:32

    דף list.ejs בתיקיית products

  7. 05:39

    חיבור ה-Products Controller

  8. 06:38

    ניתוב ל-products ונתיבי partials

תמלול ההרצאה: יצירת עמוד עבור המוצר

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

  1. 00:04

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

  2. 00:23

    אז לצורך כך בואו נתחיל הפעם מהצד של הקונטרולר. בואו נצרף עוד קונטרולר, נקרא לו product controller.js ואנחנו רוצים להתחיל להביא את הדברים הדרושים יש לנו כאן const express require express והדבר הראשון אנחנו רוצים גם לגשת לפרודקט לוג'יק כי כמובן אנחנו צריכים את כל המוצרים require לך בבקשה לביזנס לוג'יק ותביא לי

  3. 01:00

    את הפרודקט לוג'יק אנחנו רוצים את המוצר פרודקט הספציפי כלומר את המודל שלנו Require, לך לתיקיית המודל ותביא לנו את המוצר, בואו נבנה את הראוטר, יש לנו כאן את express.router, נחשוף אותו החוצה, module exports router ואנחנו יכולים עכשיו לגשת ולהתחיל לבנות

  4. 01:29

    את הראוטים השונים. אז יש לנו router.get, אם גולשים לנתיב שהוא יחסי למה שאנחנו הולכים לרשום ב-app.js שזה בעצם המוצרים אז אנחנו רוצים לגשת ולבנות פונקציה אסינכרונית.

  5. 01:54

    הנה היא, היא מקבלת כמובן request.response ואנחנו רוצים פה try catch. ב-catch כרגע מה שאני אעשה זה console.error רק נציג את השגיאה על המסך בהמשך נטפל איך בדיוק אנחנו מחזירים שגיאות ללקוח.

  6. 02:19

    נבנה פה products await לפרודקטס לוג'יק נקודה get all products async בצורה כזאת ואנחנו רוצים to ריספונס רנדר ואנחנו רוצים אם היוזר גולש לפרודקטס סלאש ליסט לדוגמה אז אנחנו רוצים להביא לו כל המוצרים האלה מה בעצם עשינו פה כאן אמרנו לאן היוזר גולש פרודקטס סלאש ליסט שימו לב שאנחנו לא בונים כרגע ארסט פול סרוויס

  7. 03:05

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

  8. 03:23

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

  9. 03:53

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

  10. 04:10

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

  11. 04:28

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

  12. 04:47

    וב-Products אנחנו רוצים איזשהו דף שיתאר את ה-List עצמו. זה בעצם מה שכתבנו כאן, Render Products List. בואו ניגש ונבנה לעצמנו דף, יש לנו כאן list.ejs וניקח, האמת אולי ניקח את דף הבית ctrl-a, ctrl-c ופשוט נשנה את מה שצריך.

  13. 05:30

    כן, יש לנו פה את הכותרת ואת הפוטר, באזור של המיין הולך להיות לנו משהו אחר, אבל שאני לא אשכח, בואו כבר ניגש לפה ונגדיר את ה-Products Controller Wire בתיקיית ה-Controllers, יש לנו את Products Controller ואנחנו רוצים לשכפל את כל ה-Use הזה ולרשום לו פה אם ה-User גולש ל-Products תן ל-Products את השליטה לאיפשהו

  14. 06:20

    בפרודקט ואז הפרודקט קונטרולר יקבל את השליטה ובפרודקט קונטרולר אנחנו רואים שזה בעצם הנתיב היחסי. זאת אומרת שזה אומר לנו אם היוזר גולש ל/products אנחנו רוצים to render את product/list לא אם היוזר גולש ל/products/list כמו שתיארתי בהתחלה ואז אנחנו הולכים להביא לו את הדף הזה.

  15. 06:53

    מה בעצם אנחנו רוצים להביא לו בדף? אז ראשית, ה-Header EJS, ה-Partial Header לא נמצא באותה תיקייה שלנו.

  16. 07:04

    אנחנו רוצים לעלות תיקייה אחת למעלה, להגיע ל-Layout ובתוכו להגיע ל-Header. אותו הדבר אנחנו רוצים ב-Footer.

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

ההרצאה הקודמת: Using the locals Object

ההרצאה הבאה: הוספת תמונה למוצר

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

  • ריאקט - דף 404 - עמוד לא קיים / דף לא נמצא
  • יצירת סכמה עבור Data Warehouse
  • יצירת Interceptor - עבור מסד הנתונים
  • יצירת פרופיל עבור Windows Autopilot

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

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