# בניית אפליקציית בנקאות חלק 1: תבניות HTML ונתיבים באפליקציית ווב כשמחשב ההנחיה של אפולו 11 ניווט לירח בשנת 1969, הוא היה צריך לעבור בין תוכניות שונות מבלי להפעיל מחדש את כל המערכת. אפליקציות ווב מודרניות פועלות באופן דומה – הן משנות את מה שאתה רואה מבלי לטעון הכל מחדש. זה יוצר חוויית משתמש חלקה ומהירה כפי שמצופה כיום. בניגוד לאתרים מסורתיים שטוענים מחדש את כל הדף בכל אינטראקציה, אפליקציות ווב מודרניות מעדכנות רק את החלקים שדורשים שינוי. גישה זו, בדומה לאופן שבו מרכז הבקרה עובר בין תצוגות שונות תוך שמירה על תקשורת רציפה, יוצרת את החוויה החלקה שאנו מצפים לה. הנה מה שהופך את ההבדל לכל כך דרמטי: | אפליקציות מרובות דפים מסורתיות | אפליקציות דף יחיד מודרניות | |----------------------------------|----------------------------| | **ניווט** | טעינת דף מלאה לכל מסך | מעבר תוכן מיידי | | **ביצועים** | איטי יותר בשל הורדת HTML מלאה | מהיר יותר עם עדכונים חלקיים | | **חוויית משתמש** | הבהובים בדף | מעברים חלקים כמו אפליקציה | | **שיתוף נתונים** | קשה בין דפים | ניהול מצב קל | | **פיתוח** | תחזוקת קבצי HTML מרובים | HTML יחיד עם תבניות דינמיות | **הבנת האבולוציה:** - **אפליקציות מסורתיות** דורשות בקשות לשרת עבור כל פעולה ניווט - **אפליקציות דף יחיד מודרניות** נטענות פעם אחת ומעדכנות תוכן באופן דינמי באמצעות JavaScript - **ציפיות משתמשים** כיום מעדיפות אינטראקציות מיידיות וחלקות - **יתרונות ביצועים** כוללים הפחתת רוחב פס ותגובות מהירות יותר בשיעור הזה, נבנה אפליקציית בנקאות עם מסכים מרובים שזורמים יחד בצורה חלקה. כמו מדענים שמשתמשים במכשירים מודולריים שניתן להתאים לניסויים שונים, נשתמש בתבניות HTML כרכיבים שניתן להשתמש בהם מחדש ולהציגם לפי הצורך. תעבדו עם תבניות HTML (תוכניות בסיס לשימוש חוזר עבור מסכים שונים), ניתוב JavaScript (המערכת שמחליפה בין מסכים), ו-API ההיסטוריה של הדפדפן (ששומר על כפתור החזרה פועל כמצופה). אלו הן אותן טכניקות בסיסיות שמשתמשים בהן מסגרות כמו React, Vue ו-Angular. בסוף השיעור, תהיה לכם אפליקציית בנקאות עובדת שמדגימה עקרונות מקצועיים של אפליקציות דף יחיד. ## שאלון לפני השיעור [שאלון לפני השיעור](https://ff-quizzes.netlify.app/web/quiz/41) ### מה תצטרכו נזדקק לשרת ווב מקומי כדי לבדוק את אפליקציית הבנקאות שלנו – אל תדאגו, זה קל יותר ממה שזה נשמע! אם עדיין אין לכם אחד כזה, פשוט התקינו [Node.js](https://nodejs.org) והריצו `npx lite-server` מתיקיית הפרויקט שלכם. הפקודה הזו תפעיל שרת מקומי ותפתח את האפליקציה שלכם בדפדפן באופן אוטומטי. ### הכנה במחשב שלכם, צרו תיקייה בשם `bank` עם קובץ בשם `index.html` בתוכה. נתחיל מתבנית HTML [בסיסית](https://en.wikipedia.org/wiki/Boilerplate_code): ```html Bank App ``` **הנה מה שהתבנית הזו מספקת:** - **מגדירה** את מבנה מסמך HTML5 עם הצהרת DOCTYPE נכונה - **מגדירה** קידוד תווים כ-UTF-8 לתמיכה בטקסט בינלאומי - **מאפשרת** עיצוב רספונסיבי עם תג מטה viewport להתאמה לניידים - **מגדירה** כותרת תיאורית שמופיעה בלשונית הדפדפן - **יוצרת** חלק גוף נקי שבו נבנה את האפליקציה שלנו > 📁 **תצוגה מקדימה של מבנה הפרויקט** > > **בסוף השיעור, הפרויקט שלכם יכיל:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **תפקידי הקבצים:** > - **index.html**: מכיל את כל התבניות ומספק את מבנה האפליקציה > - **app.js**: מטפל בניווט, ניתוב וניהול תבניות > - **תבניות**: מגדירות את ממשק המשתמש עבור התחברות, לוח בקרה ומסכים אחרים --- ## תבניות HTML תבניות פותרות בעיה בסיסית בפיתוח ווב. כשגוטנברג המציא את הדפוס עם אותיות ניידות בשנות ה-1440, הוא הבין שבמקום לחרוט דפים שלמים, הוא יכול ליצור בלוקים של אותיות לשימוש חוזר ולסדר אותם לפי הצורך. תבניות HTML פועלות על אותו עיקרון – במקום ליצור קבצי HTML נפרדים לכל מסך, אתם מגדירים מבנים לשימוש חוזר שניתן להציגם לפי הצורך. חשבו על תבניות כעל תוכניות בסיס לחלקים שונים של האפליקציה שלכם. כמו שאדריכל יוצר תוכנית אחת ומשתמש בה מספר פעמים במקום לצייר מחדש חדרים זהים, אנחנו יוצרים תבניות פעם אחת ומשתמשים בהן לפי הצורך. הדפדפן שומר את התבניות האלה מוסתרות עד ש-JavaScript מפעיל אותן. אם אתם רוצים ליצור מסכים מרובים עבור דף ווב, פתרון אחד יהיה ליצור קובץ HTML נפרד עבור כל מסך שתרצו להציג. עם זאת, פתרון זה מגיע עם כמה אי-נוחות: - אתם צריכים לטעון מחדש את כל ה-HTML כשעוברים בין מסכים, מה שיכול להיות איטי. - קשה לשתף נתונים בין המסכים השונים. גישה אחרת היא להשתמש בקובץ HTML יחיד, ולהגדיר מספר [תבניות HTML](https://developer.mozilla.org/docs/Web/HTML/Element/template) באמצעות אלמנט `