# בניית אפליקציית בנקאות חלק 1: תבניות HTML ונתיבים באפליקציית ווב ```mermaid journey title Your Banking App Development Journey section SPA Fundamentals Understand single-page apps: 3: Student Learn template concepts: 4: Student Master DOM manipulation: 4: Student section Routing Systems Implement client-side routing: 4: Student Handle browser history: 5: Student Create navigation systems: 5: Student section Professional Patterns Build modular architecture: 5: Student Apply best practices: 5: Student Create user experiences: 5: Student ``` כשמחשב ההנחיה של אפולו 11 ניווט לירח בשנת 1969, הוא היה צריך לעבור בין תוכניות שונות מבלי להפעיל מחדש את כל המערכת. אפליקציות ווב מודרניות פועלות באופן דומה – הן משנות את מה שאתה רואה מבלי לטעון הכל מחדש. זה יוצר את החוויה החלקה והמהירה שהמשתמשים מצפים לה כיום. בניגוד לאתרים מסורתיים שטוענים דפים שלמים בכל אינטראקציה, אפליקציות ווב מודרניות מעדכנות רק את החלקים שדורשים שינוי. גישה זו, בדומה לאופן שבו מרכז הבקרה עובר בין תצוגות שונות תוך שמירה על תקשורת רציפה, יוצרת את החוויה הזורמת שאליה התרגלנו. הנה מה שהופך את ההבדל לכל כך משמעותי: | אפליקציות מרובות דפים מסורתיות | אפליקציות דף יחיד מודרניות | |----------------------------------|-----------------------------| | **ניווט** | טעינת דף מלאה לכל מסך | מעבר תוכן מיידי | | **ביצועים** | איטיים יותר בגלל הורדת HTML מלאה | מהירים יותר עם עדכונים חלקיים | | **חוויית משתמש** | הבהובים בדף | מעברים חלקים כמו אפליקציה | | **שיתוף נתונים** | קשה בין דפים | ניהול מצב קל | | **פיתוח** | תחזוקת קבצי HTML מרובים | HTML יחיד עם תבניות דינמיות | **הבנת האבולוציה:** - **אפליקציות מסורתיות** דורשות בקשות שרת לכל פעולה ניווט - **אפליקציות דף יחיד מודרניות** נטענות פעם אחת ומעדכנות תוכן באופן דינמי באמצעות JavaScript - **ציפיות המשתמשים** כיום מעדיפות אינטראקציות מיידיות וחלקות - **יתרונות ביצועים** כוללים הפחתת רוחב פס ותגובות מהירות יותר בשיעור זה, נבנה אפליקציית בנקאות עם מסכים מרובים שזורמים יחד בצורה חלקה. כמו מדענים שמשתמשים במכשירים מודולריים שניתן להתאים לניסויים שונים, נשתמש בתבניות HTML כרכיבים שניתן לעשות בהם שימוש חוזר ולהציגם לפי הצורך. תעבדו עם תבניות HTML (תוכניות בסיס לשימוש חוזר עבור מסכים שונים), ניתוב JavaScript (המערכת שמחליפה בין מסכים), ו-API ההיסטוריה של הדפדפן (ששומר על פעולת כפתור החזרה כמצופה). אלו הן אותן טכניקות בסיסיות שמשתמשים בהן במסגרת כמו React, Vue ו-Angular. בסוף, תהיה לכם אפליקציית בנקאות עובדת שמדגימה עקרונות מקצועיים של אפליקציות דף יחיד. ```mermaid mindmap root((Single-Page Applications)) Architecture Template System Client-side Routing State Management Event Handling Templates Reusable Components Dynamic Content DOM Manipulation Content Switching Routing URL Management History API Navigation Logic Browser Integration User Experience Fast Navigation Smooth Transitions Consistent State Modern Interactions Performance Reduced Server Requests Faster Page Transitions Efficient Resource Usage Better Responsiveness ``` ## שאלון לפני השיעור [שאלון לפני השיעור](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 נפרדים לכל מסך, אתם מגדירים מבנים לשימוש חוזר שניתן להציגם לפי הצורך. ```mermaid flowchart TD A["📋 Template Definition"] --> B["💬 Hidden in DOM"] B --> C["🔍 JavaScript Finds Template"] C --> D["📋 Clone Template Content"] D --> E["🔗 Attach to Visible DOM"] E --> F["👁️ User Sees Content"] G["Login Template"] --> A H["Dashboard Template"] --> A I["Future Templates"] --> A style A fill:#e3f2fd style D fill:#e8f5e8 style F fill:#fff3e0 style B fill:#f3e5f5 ``` חשבו על תבניות כעל תוכניות בסיס לחלקים שונים של האפליקציה שלכם. בדיוק כמו שאדריכל יוצר תוכנית אחת ומשתמש בה מספר פעמים במקום לצייר מחדש חדרים זהים, אנחנו יוצרים תבניות פעם אחת ומשתמשים בהן לפי הצורך. הדפדפן שומר את התבניות הללו מוסתרות עד ש-JavaScript מפעיל אותן. אם אתם רוצים ליצור מסכים מרובים עבור דף ווב, פתרון אחד יהיה ליצור קובץ HTML אחד לכל מסך שתרצו להציג. עם זאת, פתרון זה מגיע עם כמה אי-נוחות: - אתם צריכים לטעון מחדש את כל ה-HTML כשעוברים מסך, מה שיכול להיות איטי. - קשה לשתף נתונים בין המסכים השונים. גישה אחרת היא להשתמש בקובץ HTML אחד בלבד, ולהגדיר מספר [תבניות HTML](https://developer.mozilla.org/docs/Web/HTML/Element/template) באמצעות אלמנט `