Η Inertiajs χειρίζεται τη διαχείριση του κράτους σε εφαρμογές μιας σελίδας (SPA) μέσω μιας μοναδικής προσέγγισης που συνδυάζει δρομολόγηση από την πλευρά του διακομιστή με απόδοση από την πλευρά του πελάτη, εξαλείφοντας την ανάγκη για ένα ξεχωριστό σύστημα διαχείρισης του κράτους πελάτη που είναι χαρακτηριστικό σε παραδοσιακά ιαματικά λουτρά που κατασκευάστηκαν με πλαίσια όπως το React ή το Vue μόνο. Ακολουθεί μια ολοκληρωμένη εξήγηση για το πώς το Inertiajs διαχειρίζεται το κράτος, τη διατήρηση της ανταπόκρισης και τις ομαλές μεταβάσεις σε ένα πλαίσιο spa:
Το InertiajS ενεργεί ουσιαστικά ως βιβλιοθήκη δρομολόγησης από την πλευρά του πελάτη που επιτρέπει επισκέψεις σελίδων χωρίς να απαιτείται επαναφόρτωση πλήρους σελίδας. Αντί για το πρόγραμμα περιήγησης που λαμβάνει μια πλήρη σελίδα HTML σε κάθε πλοήγηση, η Inertia Intertia Intercepts συνδέει τα κλικ και λαμβάνει απαντήσεις JSON από το διακομιστή. Αυτές οι απαντήσεις περιέχουν το όνομα του στοιχείου της σελίδας μαζί με τα δεδομένα κατάστασης της σελίδας (Props). Αυτή η προσέγγιση που βασίζεται σε δεδομένα σημαίνει ότι ο διακομιστής ελέγχει ποια κατάσταση ή δεδομένα αποστέλλονται στον πελάτη για κάθε σελίδα, η οποία στη συνέχεια η αδράνεια χρησιμοποιεί για να κάνει δυναμικά και να ενημερώνει μόνο τα απαραίτητα μέρη της διεπαφής, με αποτέλεσμα μια ομαλή εμπειρία σπα.
Ο βασικός μηχανισμός διαχείρισης της κατάστασης περιστρέφεται γύρω από τη διατήρηση του τρέχοντος "αντικειμένου σελίδας", το οποίο περιλαμβάνει το στοιχείο για την απόδοση και τα στηρίγματα για να περάσουν σε αυτό. Ο διακομιστής δημιουργεί αυτό το αντικείμενο σελίδας με τα σχετικά δεδομένα κατάστασης για μια δεδομένη διαδρομή. Όταν η πλοήγηση συμβαίνει, η αδράνεια εκτελεί ένα αίτημα XHR (AJAX) και όχι πλήρους επαναφόρτωσης σελίδας. Λαμβάνει το νέο αντικείμενο σελίδας, το συγκρίνει με το τρέχον και ενημερώνει το μπροστινό μέρος με την ανταλλαγή εξαρτημάτων και στηρίγματα ανάλογα χωρίς να χάσει την προηγούμενη κατάσταση όπου χρειάζεται.
Για τη διατήρηση της κατάστασης σε όλη τη πλοήγηση ή σε περιπτώσεις όπως η διατήρηση εισόδου μορφής, η αδράνεια παρέχει ένα χαρακτηριστικό που ονομάζεται `useremember '. Αυτή η χρησιμότητα εξοικονομεί κατάσταση εξαρτημάτων (συχνά σχηματίζουν κατάσταση) στην κατάσταση ιστορίας του προγράμματος περιήγησης, επιτρέποντας στους χρήστες να περιηγηθούν μακριά και πίσω χωρίς να χάσουν την εισήγησή τους. Το `userEmember 'μπορεί να εφαρμοστεί σε οποιοδήποτε αντικείμενο δεδομένων και δίνοντας ένα μοναδικό κλειδί, η αδράνεια γνωρίζει ποια αποθήκευση κατάστασης για να αποκαταστήσει όταν ο χρήστης επανεξετάζει αυτή τη σελίδα ή το στοιχείο. Αυτό μιμείται τη συμπεριφορά της κατάστασης μόνο από την πλευρά του πελάτη, αλλά το διαχειρίζεται μέσω του κύκλου ζωής της πλοήγησης του Spa.
Όταν ασχολείται με έντυπα, η αδράνεια προσφέρει έναν βελτιωμένο βοηθό "USEFORM" που όχι μόνο διαχειρίζεται τη μορφή κατάστασης, αλλά και αυτόματα θυμάται αυτόματα την κατάσταση μεταξύ επισκέψεων σελίδων, εκτός εάν εκκαθαριστεί ρητά. Αυτό σημαίνει ότι οι χρήστες δεν χάνουν δεδομένα φόρμας σχετικά με τη πλοήγηση, βελτιώνοντας το UX χωρίς να απαιτούν πολύπλοκες λύσεις κατάστασης από την πλευρά του πελάτη.
Η Inertia υποστηρίζει επίσης την ανταλλαγή παγκόσμιων δεδομένων σε όλες τις σελίδες χρησιμοποιώντας κοινόχρηστα στηρίγματα που διαβιβάζονται από το διακομιστή σε κάθε αίτημα. Αυτό περιλαμβάνει δεδομένα όπως η κατάσταση ταυτότητας, οι πληροφορίες χρήστη ή τα μηνύματα flash. Αυτά τα κοινόχρηστα στηρίγματα συγχωνεύονται αυτόματα σε στηρίγματα κάθε συστατικού κάθε σελίδας, εξασφαλίζοντας συνεπή, κεντρική κατάσταση που διατίθεται σε όλη την εφαρμογή χωρίς επιπλέον χειροκίνητη διαχείριση.
Οι χρήσεις αδράνειας πρωτοκόλλου περιλαμβάνουν επίσης μια λειτουργία έκδοσης για τη διαχείριση συγχρονισμού περιουσιακών στοιχείων πελάτη και διακομιστή, αποφεύγοντας τις αναντιστοιχίες κατάστασης που προκαλούνται από τα αρχεία JavaScript JavaScript ή CSS. Όταν ο διακομιστής ανιχνεύσει μια αλλαγή έκδοσης, αναγκάζει μια πλήρη σελίδα επαναφόρτωση για να επαναφέρει την κατάσταση της εφαρμογής και να φορτώσει τα πιο πρόσφατα περιουσιακά στοιχεία.
Επειδή η κατάσταση της αδράνειας είναι αυστηρά ενσωματωμένη στις διαδρομές και τους ελεγκτές από την πλευρά του διακομιστή, ενθαρρύνει ένα πρότυπο χρήσης όπου η λογική του διακομιστή υπαγορεύει τη διαθεσιμότητα δεδομένων και το frontend καταναλώνει τα δεδομένα αυτά δηλωτικά. Κατά συνέπεια, μεγάλο μέρος της πολυπλοκότητας της διαχείρισης του κράτους που είναι εγγενή σε ιαματικά λουτρά, όπως το χειρισμό ασύγχρονων δεδομένων και συγχρονισμού, εκφορτώνεται στο πλαίσιο του διακομιστή. Αυτό οδηγεί σε απλοποιημένο κώδικα πελάτη και λιγότερο boilerplate γύρω από το συγχρονισμό κατάστασης.
Συνοπτικά, η Inertiajs χειρίζεται την κατάσταση σε ιαματικά λουτρά από:
- Χρησιμοποιώντας αντικείμενα σελίδας JSON που αποστέλλονται από διαδρομές διακομιστή για να αντιπροσωπεύουν την τρέχουσα κατάσταση σελίδας.
- Παρακολούθηση πλοήγησης για να ληφθούν ελάχιστα δεδομένα JSON και όχι πλήρεις σελίδες HTML.
- Δυναμική απόδοση κατάλληλων εξαρτημάτων από την πλευρά του πελάτη με τα στηρίγματα τους σε κάθε αλλαγή διαδρομής.
- Παρέχοντας `useremember 'για να επιμείνει η κατάσταση εξαρτημάτων σε όλες τις πλοίων μέσω ιστορικού προγράμματος περιήγησης.
- Χρησιμοποιώντας εξειδικευμένους βοηθούς φόρμας (`useform ') για να διαχειριστεί και να θυμηθεί την κατάσταση φόρμας.
- Επιτρέποντας δεδομένα κοινού διακομιστή (κοινόχρηστα στηρίγματα) για παγκόσμια, συνεπή κατάσταση σε όλο το σπα.
- Διαχείριση των εκδόσεων περιουσιακών στοιχείων για τη διατήρηση του πελάτη και του διακομιστή σε συγχρονισμό, διατηρώντας την ακεραιότητα της κατάστασης εφαρμογών.
- Λογική εκφόρτωσης και λογικής δεδομένων στην πλευρά του διακομιστή, ελαχιστοποιώντας την πολυπλοκότητα της πλευράς του πελάτη.