# Δημιουργία Εφαρμογής Τραπεζικής Μέρος 1: Πρότυπα HTML και Διαδρομές σε Μια Web Εφαρμογή ```mermaid journey title Η Διαδρομή Ανάπτυξης της Τραπεζικής Εφαρμογής σας section Βασικά Στοιχεία SPA Κατανοήστε τις μονής σελίδας εφαρμογές: 3: Student Μάθετε τις έννοιες προτύπων: 4: Student Εξοικειωθείτε με τη διαχείριση DOM: 4: Student section Συστήματα Δρομολόγησης Υλοποιήστε δρομολόγηση πελάτη: 4: Student Διαχειριστείτε το ιστορικό περιηγητή: 5: Student Δημιουργήστε συστήματα πλοήγησης: 5: Student section Επαγγελματικά Μοτίβα Δημιουργήστε αρθρωτή αρχιτεκτονική: 5: Student Εφαρμόστε βέλτιστες πρακτικές: 5: Student Δημιουργήστε εμπειρίες χρήστη: 5: Student ``` Όταν ο υπολογιστής καθοδήγησης του Apollo 11 πλοηγήθηκε προς τη σελήνη το 1969, έπρεπε να μεταβαίνει μεταξύ διαφορετικών προγραμμάτων χωρίς να επανεκκινεί ολόκληρο το σύστημα. Οι σύγχρονες web εφαρμογές λειτουργούν παρόμοια – αλλάζουν αυτό που βλέπετε χωρίς να φορτώνουν ξανά τα πάντα από την αρχή. Αυτό δημιουργεί την ομαλή, ανταποκρινόμενη εμπειρία που αναμένουν σήμερα οι χρήστες. Σε αντίθεση με τους παραδοσιακούς ιστότοπους που ανανεώνουν ολόκληρες σελίδες για κάθε αλληλεπίδραση, οι σύγχρονες web εφαρμογές ενημερώνουν μόνο τα τμήματα που χρειάζονται αλλαγή. Αυτή η προσέγγιση, όπως και ο έλεγχος αποστολής που εναλλάσσει τις διάφορες οθόνες ενώ διατηρεί συνεχή επικοινωνία, δημιουργεί αυτή τη ρευστή εμπειρία που έχουμε συνηθίσει. Αυτό που κάνει τη διαφορά τόσο δραματική είναι: | Παραδοσιακές Εφαρμογές Πολλαπλών Σελίδων | Σύγχρονες Εφαρμογές Μίας Σελίδας | |----------------------------|-------------------------| | **Πλοήγηση** | Πλήρης φόρτωση σελίδας για κάθε οθόνη | Άμεση αλλαγή περιεχομένου | | **Απόδοση** | Πιο αργή λόγω πλήρους λήψης HTML | Ταχύτερη με μερικές ενημερώσεις | | **Εμπειρία Χρήστη** | Ενοχλητικές ανανεώσεις σελίδας | Ομαλές, εφαρμογές-σαν μεταβάσεις | | **Κοινή χρήση δεδομένων** | Δύσκολη μεταξύ σελίδων | Εύκολος χειρισμός κατάστασης | | **Ανάπτυξη** | Πολλαπλά αρχεία HTML προς διαχείριση | Ενιαίο HTML με δυναμικά πρότυπα | **Κατανόηση της εξέλιξης:** - **Παραδοσιακές εφαρμογές** απαιτούν αιτήματα προς τον εξυπηρετητή για κάθε πλοήγηση - **Σύγχρονες SPA** φορτώνουν μία φορά και ενημερώνουν δυναμικά το περιεχόμενο χρησιμοποιώντας JavaScript - **Οι προσδοκίες των χρηστών** πλέον ευνοούν άμεσες, ομαλές αλληλεπιδράσεις - **Οφέλη απόδοσης** περιλαμβάνουν μειωμένο εύρος ζώνης και ταχύτερες αποκρίσεις Σε αυτό το μάθημα, θα δημιουργήσουμε μια τραπεζική εφαρμογή με πολλαπλές οθόνες που ρέουν ομαλά η μία στην άλλη. Όπως οι επιστήμονες χρησιμοποιούν αρθρωτά όργανα που μπορούν να επαναδιαμορφωθούν για διάφορα πειράματα, θα χρησιμοποιήσουμε πρότυπα HTML ως επαναχρησιμοποιήσιμα στοιχεία που μπορούν να προβάλλονται όπως απαιτείται. Θα εργαστείτε με πρότυπα HTML (επανχρησιμοποιήσιμα σχέδια για διαφορετικές οθόνες), δρομολόγηση με JavaScript (το σύστημα που αλλάζει μεταξύ των οθονών) και το API ιστορικού του προγράμματος περιήγησης (που διατηρεί το κουμπί επιστροφής λειτουργικό όπως αναμένεται). Αυτές είναι οι ίδιες βασικές τεχνικές που χρησιμοποιούν πλαίσια όπως React, Vue και Angular. Στο τέλος, θα έχετε μια λειτουργική τραπεζική εφαρμογή που δείχνει επαγγελματικές αρχές εφαρμογής μίας σελίδας. ```mermaid mindmap root((Εφαρμογές Μίας Σελίδας)) Architecture Σύστημα Προτύπων Δρομολόγηση από Πελάτη Διαχείριση Κατάστασης Χειρισμός Γεγονότων Templates Επαναχρησιμοποιήσιμα Συστατικά Δυναμικό Περιεχόμενο Χειρισμός DOM Εναλλαγή Περιεχομένου Routing Διαχείριση URL Ιστορικό API Λογική Πλοήγησης Ενσωμάτωση Περιηγητή User Experience Γρήγορη Πλοήγηση Ομαλές Μεταβάσεις Συνεπής Κατάσταση Σύγχρονες Αλληλεπιδράσεις Performance Μειωμένα Αιτήματα Διακομιστή Ταχύτερες Μεταβάσεις Σελίδας Αποδοτική Χρήση Πόρων Καλύτερη Ανταπόκριση ``` ## Διαγώνισμα Προ Μαθήματος [Διαγώνισμα προ μαθήματος](https://ff-quizzes.netlify.app/web/quiz/41) ### Τι Θα Χρειαστείτε Θα χρειαστούμε έναν τοπικό διακομιστή web για να δοκιμάσουμε την τραπεζική μας εφαρμογή – μην ανησυχείτε, είναι πιο εύκολο από ό,τι ακούγεται! Αν δεν έχετε ήδη έτοιμο, απλά εγκαταστήστε το [Node.js](https://nodejs.org) και τρέξτε `npx lite-server` από το φάκελο του έργου σας. Αυτή η χρήσιμη εντολή δημιουργεί έναν τοπικό διακομιστή και ανοίγει αυτόματα την εφαρμογή στο πρόγραμμα περιήγησης. ### Προετοιμασία Στον υπολογιστή σας, δημιουργήστε έναν φάκελο με όνομα `bank` και μέσα σε αυτόν ένα αρχείο με όνομα `index.html`. Θα ξεκινήσουμε από αυτό το [boilerplate](https://en.wikipedia.org/wiki/Boilerplate_code) HTML: ```html Bank App ``` **Αυτά παρέχει το boilerplate:** - **Θέτει** τη δομή του εγγράφου HTML5 με τη σωστή δήλωση DOCTYPE - **Ρυθμίζει** την κωδικοποίηση χαρακτήρων ως UTF-8 για διεθνή υποστήριξη κειμένου - **Ενεργοποιεί** το σχεδιασμό ευαίσθητο (responsive) με το meta tag viewport για συμβατότητα με κινητές συσκευές - **Ορίζει** έναν περιγραφικό τίτλο που εμφανίζεται στην καρτέλα του προγράμματος περιήγησης - **Δημιουργεί** μια καθαρή ενότητα σώματος όπου θα χτίσουμε την εφαρμογή μας > 📁 **Προεπισκόπηση Δομής Έργου** > > **Μέχρι το τέλος αυτού του μαθήματος, το έργο σας θα περιλαμβάνει:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **Αρμοδιότητες αρχείων:** > - **index.html**: Περιέχει όλα τα πρότυπα και παρέχει τη δομή της εφαρμογής > - **app.js**: Διαχειρίζεται τη δρομολόγηση, την πλοήγηση και τη διαχείριση προτύπων > - **Πρότυπα**: Ορίζουν το UI για είσοδο, πίνακα ελέγχου και άλλες οθόνες --- ## Πρότυπα HTML Τα πρότυπα λύνουν ένα θεμελιώδες πρόβλημα στην ανάπτυξη web. Όταν ο Gutenberg εφηύρε την εκτύπωση με κινητά στοιχεία τη δεκαετία του 1440, κατάλαβε πως αντί να χαράσσει ολόκληρες σελίδες, μπορούσε να δημιουργεί επαναχρησιμοποιήσιμους χαρακτήρες και να τους τοποθετεί όπως χρειάζεται. Τα πρότυπα HTML λειτουργούν με την ίδια αρχή – αντί να δημιουργούμε ξεχωριστά αρχεία HTML για κάθε οθόνη, ορίζουμε επαναχρησιμοποιήσιμες δομές που μπορούν να προβάλλονται κατά περίπτωση. ```mermaid flowchart TD A["📋 Ορισμός Προτύπου"] --> B["💬 Κρυφό στο DOM"] B --> C["🔍 Το JavaScript Βρίσκει το Πρότυπο"] C --> D["📋 Αντιγραφή Περιεχομένου Προτύπου"] D --> E["🔗 Σύνδεση με Ορατό DOM"] E --> F["👁️ Ο Χρήστης Βλέπει το Περιεχόμενο"] G["Πρότυπο Σύνδεσης"] --> A H["Πρότυπο Πίνακα Ελέγχου"] --> A I["Μελλοντικά Πρότυπα"] --> 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) χρησιμοποιώντας το στοιχείο `