„Inertiads“ tvarko valstybės valdymą vieno puslapio programose (SPA), naudodama unikalų metodą, kuris susilieja su serverio maršrutais su kliento pusės perteikimu, pašalindamas poreikį atskirai kliento valstybinei valdymo sistemai, būdingam tradicinėms SPA, sukurtoms tokioms sistemoms kaip „React“ ar „Vue“. Čia pateiktas išsamus paaiškinimas, kaip inertiajs tvarko būseną, palaiko reagavimą ir sklandžius perėjimus SPA kontekste:
Inertiajs iš esmės veikia kaip kliento pusės maršrutizacijos biblioteka, leidžianti apsilankyti puslapiuose, nereikalaujant viso puslapio perkrovos. Vietoj naršyklės, pateikdama visą HTML puslapį kiekvienoje naršyme, inercija perima nuorodų paspaudimus ir pateikia JSON atsakymus iš serverio. Šiuose atsakymuose yra puslapio komponento pavadinimas kartu su puslapio būsenos duomenimis (rekvizitais). Šis duomenimis pagrįstas metodas reiškia, kad serveris kontroliuoja, kokia būsena ar duomenys yra siunčiami klientui kiekvienam puslapiui, kurį inercija naudoja dinamiškai pateikti ir atnaujinti tik būtinas sąsajos dalis, todėl įgauna sklandų SPA patirtį.
Pagrindinis būsenos valdymo mechanizmas sukasi apie dabartinio „puslapio objekto“ laikymą, kuriame yra komponentas, kurį reikia pateikti, ir rekvizitai, kuriuos reikia perduoti. Serveris sugeneruoja šį puslapio objektą su atitinkamais būsenos duomenimis tam tikram maršrutui. Kai vyks navigacija, „Inertia“ atlieka XHR (AJAX) užklausą, o ne visą puslapį perkrauti. Jis gauna naują puslapio objektą, palygina jį su dabartiniu, ir atnaujina priekinį galą, atitinkamai apsikeičiant komponentais ir rekvizitais, neprarandant ankstesnės būsenos, kai reikia.
Būsenos išsaugojimui visoje navigacijoje arba tokiais atvejais kaip formos įvesties išlaikymas, inercija pateikia funkciją, vadinamą „Useremember“. Ši naudingumas išsaugo komponento būseną (dažnai sudaro būseną) į naršyklės istorijos būseną, leisdama vartotojams naršyti ir atgal neprarandant savo įvesties. „UsereMember“ gali būti pritaikytas bet kuriame duomenų objekte, ir pateikiant unikalų raktą, inercija žino, kurią „Saved State“ atkurti, kai vartotojas peržiūri tą puslapį ar komponentą. Tai imituoja tik kliento būsenos elgesį, tačiau tai valdo per SPA navigacijos gyvavimo ciklą.
Bendraudamas su formomis, „Inertia“ siūlo patobulintą formos pagalbininką „naudojimo formą“, kuris ne tik valdo formą, bet ir automatiškai prisimena būseną tarp puslapio vizitų, nebent tai būtų aiškiai išvalyta. Tai reiškia, kad vartotojai nepraranda formos duomenų apie navigaciją, tobulindami UX, nereikalaudami sudėtingų kliento būsenos sprendimų.
Inercija taip pat palaiko dalijimąsi globaliais duomenimis visuose puslapiuose, naudodama bendrąsias rekvizitus, perduodamus iš serverio kiekvienoje užklausoje. Tai apima tokius duomenis kaip autentifikavimo būsena, vartotojo informacija ar „Flash“ pranešimai. Šie bendri rekvizitai automatiškai sujungiami į kiekvieno puslapio komponento rekvizitus, užtikrinančius nuoseklią, centralizuotą būseną, prieinamą visoje programoje be papildomo rankinio valdymo.
Protokolo inercijos naudojimas taip pat apima versijų funkciją, skirtą valdyti kliento ir serverio turto sinchronizaciją, išvengiant būsenų neatitikimų, kuriuos sukelia pasenę „JavaScript“ ar CSS failai. Kai serveris nustato versijos pakeitimą, jis verčia viso puslapio perkrovą iš naujo nustatyti programos būseną ir įkelti naujausią turtą.
Kadangi „Inertia“ būsena yra glaudžiai integruota su serverio maršrutais ir valdikliais, ji skatina naudoti modelį, kai serverio logika diktuoja duomenų prieinamumą, o frontendija sunaudoja tuos duomenis deklaruojant. Todėl didžioji dalis valstybės valdymo sudėtingumo, būdingo sunkių klientų SPA, pavyzdžiui, asinchroninių duomenų gavimo ir sinchronizacijos tvarkymas, yra perkeltas į serverio pusės sistemą. Tai lemia supaprastintą kliento kodą ir mažiau katilinės aplink būsenos sinchronizavimą.
Apibendrinant galima pasakyti, kad „InertiaJs“ tvarko valstybę SPA::
- JSON puslapio objektų, siunčiamų iš serverio maršrutų, naudojimas, kad būtų pavaizduota dabartinė puslapio būsena.
- Naršymo perėmimas, kad būtų galima gauti minimalius JSON duomenis, o ne į visus HTML puslapius.
- Dinamiškai pateikdami tinkamus kliento komponentus su savo rekvizitais kiekviename maršruto pakeitime.
- „UsereMember“ pateikimas išlikti komponentų būsenai per naršymą per naršyklės istoriją.
- Panaudojant specializuotų formos pagalbininkus (`naudojimo formą), kad būtų galima valdyti ir atsiminti formos būseną.
- Leidžiama bendrauti serverio duomenims (bendrinami rekvizitai) visuotinėje, nuoseklioje būsenoje visame SPA.
- Turto versijų valdymas, kad klientas ir serveris būtų sinchronizuotas, išlaikant programos būsenos vientisumą.
- Verslo ir duomenų logikos perkėlimo į serverio pusę, sumažinant kliento pusės sudėtingumą.