# Δημιουργία Εφαρμογής Τραπεζικής Μέρος 1: HTML Πρότυπα και Διαδρομές σε Μια Εφαρμογή Ιστού Όταν ο υπολογιστής καθοδήγησης του Apollo 11 πλοηγούσε προς τη Σελήνη το 1969, έπρεπε να εναλλάσσεται μεταξύ διαφορετικών προγραμμάτων χωρίς να επανεκκινεί ολόκληρο το σύστημα. Οι σύγχρονες εφαρμογές ιστού λειτουργούν παρόμοια – αλλάζουν αυτό που βλέπετε χωρίς να φορτώνουν τα πάντα από την αρχή. Αυτό δημιουργεί την ομαλή, ευέλικτη εμπειρία που περιμένουν οι χρήστες σήμερα. Σε αντίθεση με τις παραδοσιακές ιστοσελίδες που φορτώνουν ξανά ολόκληρες σελίδες για κάθε αλληλεπίδραση, οι σύγχρονες εφαρμογές ιστού ενημερώνουν μόνο τα μέρη που χρειάζονται αλλαγή. Αυτή η προσέγγιση, όπως ακριβώς η αλλαγή οθονών στο κέντρο ελέγχου ενώ διατηρείται η συνεχής επικοινωνία, δημιουργεί την ομαλή εμπειρία που έχουμε συνηθίσει. Αυτό που κάνει τη διαφορά τόσο δραματική: | Παραδοσιακές Εφαρμογές Πολλαπλών Σελίδων | Σύγχρονες Εφαρμογές Μίας Σελίδας | |------------------------------------------|----------------------------------| | **Πλοήγηση** | Επαναφόρτωση ολόκληρης σελίδας για κάθε οθόνη | Άμεση αλλαγή περιεχομένου | | **Απόδοση** | Πιο αργή λόγω πλήρους λήψης HTML | Πιο γρήγορη με μερικές ενημερώσεις | | **Εμπειρία Χρήστη** | Ενοχλητικές αναλαμπές σελίδας | Ομαλές, μεταβάσεις τύπου εφαρμογής | | **Κοινή χρήση δεδομένων** | Δύσκολη μεταξύ σελίδων | Εύκολη διαχείριση κατάστασης | | **Ανάπτυξη** | Πολλαπλά αρχεία HTML για συντήρηση | Ένα HTML με δυναμικά πρότυπα | **Κατανόηση της εξέλιξης:** - **Παραδοσιακές εφαρμογές** απαιτούν αιτήματα στον διακομιστή για κάθε ενέργεια πλοήγησης - **Σύγχρονες SPAs** φορτώνουν μία φορά και ενημερώνουν δυναμικά το περιεχόμενο χρησιμοποιώντας 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 [boilerplate](https://en.wikipedia.org/wiki/Boilerplate_code): ```html Bank App ``` **Τι παρέχει αυτό το boilerplate:** - **Καθιερώνει** τη δομή εγγράφου HTML5 με σωστή δήλωση DOCTYPE - **Ρυθμίζει** την κωδικοποίηση χαρακτήρων ως UTF-8 για υποστήριξη διεθνούς κειμένου - **Ενεργοποιεί** τον ευέλικτο σχεδιασμό με την ετικέτα meta viewport για συμβατότητα με κινητά - **Ορίζει** έναν περιγραφικό τίτλο που εμφανίζεται στην καρτέλα του προγράμματος περιήγησης - **Δημιουργεί** μια καθαρή ενότητα σώματος όπου θα κατασκευάσουμε την εφαρμογή μας > 📁 **Προεπισκόπηση Δομής Έργου** > > **Μέχρι το τέλος αυτού του μαθήματος, το έργο σας θα περιέχει:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **Αρμοδιότητες αρχείων:** > - **index.html**: Περιέχει όλα τα πρότυπα και παρέχει τη δομή της εφαρμογής > - **app.js**: Χειρίζεται τη δρομολόγηση, την πλοήγηση και τη διαχείριση προτύπων > - **Πρότυπα**: Ορίζουν το UI για σύνδεση, πίνακα ελέγχου και άλλες οθόνες --- ## HTML Πρότυπα Τα πρότυπα λύνουν ένα θεμελιώδες πρόβλημα στην ανάπτυξη ιστού. Όταν ο Γουτεμβέργιος εφηύρε την τυπογραφία με κινητά στοιχεία τη δεκαετία του 1440, συνειδητοποίησε ότι αντί να χαράζει ολόκληρες σελίδες, μπορούσε να δημιουργήσει επαναχρησιμοποιήσιμα μπλοκ γραμμάτων και να τα διατάξει όπως χρειαζόταν. Τα HTML πρότυπα λειτουργούν με την ίδια αρχή – αντί να δημιουργούμε ξεχωριστά αρχεία HTML για κάθε οθόνη, ορίζουμε επαναχρησιμοποιήσιμες δομές που μπορούν να εμφανιστούν όταν χρειάζεται. Σκεφτείτε τα πρότυπα ως σχέδια για διαφορετικά μέρη της εφαρμογής σας. Όπως ένας αρχιτέκτονας δημιουργεί ένα σχέδιο και το χρησιμοποιεί πολλές φορές αντί να ξανασχεδιάζει πανομοιότυπα δωμάτια, δημιουργούμε πρότυπα μία φορά και τα ενεργοποιούμε όταν χρειάζεται. Το πρόγραμμα περιήγησης διατηρεί αυτά τα πρότυπα κρυφά μέχρι να τα ενεργοποιήσει η JavaScript. Αν θέλετε να δημιουργήσετε πολλαπλές οθόνες για μια ιστοσελίδα, μια λύση θα ήταν να δημιουργήσετε ένα αρχείο HTML για κάθε οθόνη που θέλετε να εμφανίσετε. Ωστόσο, αυτή η λύση συνοδεύεται από κάποιες δυσκολίες: - Πρέπει να φορτώσετε ξανά ολόκληρο το HTML όταν αλλάζετε οθόνη, κάτι που μπορεί να είναι αργό. - Είναι δύσκολο να μοιραστείτε δεδομένα μεταξύ των διαφορετικών οθονών. Μια άλλη προσέγγιση είναι να έχετε μόνο ένα αρχείο HTML και να ορίσετε πολλαπλά [HTML πρότυπα](https://developer.mozilla.org/docs/Web/HTML/Element/template) χρησιμοποιώντας το στοιχείο `