Rad s objektima u web pohrani
Kada rade s HTML5 localStorage ili sessionStorage, programeri često nailaze na probleme kada pokušavaju pohraniti JavaScript objekte. Za razliku od primitivnih tipova podataka i nizova, čini se da su objekti pretvoreni u nizove, što može dovesti do zabune i neočekivanih rezultata.
Razumijevanje kako pravilno pohraniti i dohvatiti objekte pomoću web pohrane ključno je za mnoge web aplikacije. Ovaj će vodič istražiti zašto se objekti pretvaraju u nizove i pružiti jednostavno zaobilazno rješenje kako biste osigurali da su vaši objekti ispravno pohranjeni i dohvaćeni.
Naredba | Opis |
---|---|
JSON.stringify() | Pretvara JavaScript objekt ili vrijednost u JSON niz, omogućujući pohranu u localStorage ili sessionStorage. |
localStorage.setItem() | Pohranjuje par ključ-vrijednost u objektu localStorage, dopuštajući da podaci traju kroz sesije preglednika. |
localStorage.getItem() | Dohvaća vrijednost povezanu s danim ključem iz localStorage. |
JSON.parse() | Raščlanjuje JSON niz i pretvara ga natrag u JavaScript objekt, omogućujući dohvaćanje složenih struktura podataka. |
sessionStorage.setItem() | Pohranjuje par ključ-vrijednost u objektu sessionStorage, dopuštajući podacima da traju tijekom trajanja sesije stranice. |
sessionStorage.getItem() | Dohvaća vrijednost povezanu s danim ključem iz sessionStoragea. |
Učinkovito pohranjivanje i dohvaćanje objekata u web pohrani
U JavaScriptu, i su objekti web pohrane koji vam omogućuju spremanje parova ključ-vrijednost u pregledniku. Međutim, ova rješenja za pohranu podržavaju samo nizove, što znači da će pokušaj izravnog pohranjivanja JavaScript objekta rezultirati pretvaranjem objekta u prikaz niza kao što je . Za učinkovito pohranjivanje objekata morate ih pretvoriti u JSON niz pomoću JSON.stringify(). Ova metoda uzima JavaScript objekt i vraća JSON niz u koji se može pohraniti ili .
Da biste dohvatili pohranjeni objekt, morate pretvoriti JSON niz natrag u JavaScript objekt pomoću . Ova metoda uzima JSON niz i vraća odgovarajući JavaScript objekt. Skripte navedene u gornjim primjerima pokazuju ovaj proces. Prvo se stvara objekt i pretvara u JSON niz pomoću prije pohranjivanja u korištenjem localStorage.setItem(). Da bi se dohvatio objekt, JSON niz se dohvaća iz korištenjem a zatim raščlaniti natrag u JavaScript objekt pomoću .
Pohranjivanje i dohvaćanje JavaScript objekata u localStorage
Korištenje JavaScripta i JSON-a za localStorage
// Create an object
var testObject = {'one': 1, 'two': 2, 'three': 3};
// Convert the object to a JSON string and store it in localStorage
localStorage.setItem('testObject', JSON.stringify(testObject));
// Retrieve the JSON string from localStorage and convert it back to an object
var retrievedObject = JSON.parse(localStorage.getItem('testObject'));
// Verify the type and value of the retrieved object
console.log('typeof retrievedObject: ' + typeof retrievedObject);
console.log('Value of retrievedObject: ', retrievedObject);
// Output should be:
// typeof retrievedObject: object
// Value of retrievedObject: { one: 1, two: 2, three: 3 }
Pohranjivanje i dohvaćanje JavaScript objekata u sessionStorageu
Korištenje JavaScripta i JSON-a za sessionStorage
// Create an object
var testObject = {'one': 1, 'two': 2, 'three': 3};
// Convert the object to a JSON string and store it in sessionStorage
sessionStorage.setItem('testObject', JSON.stringify(testObject));
// Retrieve the JSON string from sessionStorage and convert it back to an object
var retrievedObject = JSON.parse(sessionStorage.getItem('testObject'));
// Verify the type and value of the retrieved object
console.log('typeof retrievedObject: ' + typeof retrievedObject);
console.log('Value of retrievedObject: ', retrievedObject);
// Output should be:
// typeof retrievedObject: object
// Value of retrievedObject: { one: 1, two: 2, three: 3 }
Napredne tehnike za web pohranu
Kada koristite HTML5 i , programeri često moraju pohraniti složenije podatke od nizova. Iako su JSON serijalizacija i deserijalizacija učinkovite za osnovne objekte, napredniji scenariji mogu zahtijevati dodatna razmatranja. Na primjer, ako radite s duboko ugniježđenim objektima ili objektima koji sadrže metode, potreban vam je sofisticiraniji pristup. Jedna uobičajena tehnika je korištenje knjižnice kao što je ili circular-json za rukovanje kružnim referencama i složenijim objektnim strukturama.
Ove biblioteke proširuju standard i metode za podršku serijalizaciji i deserijalizaciji objekata s kružnim referencama, omogućujući robusnije rješenje za pohranu objekata u web pohranu. Drugo razmatranje je kompresija podataka. Za velike objekte možete koristiti biblioteke poput komprimirati podatke prije pohranjivanja localStorage ili , smanjujući količinu korištenog prostora. Ovo može biti osobito korisno za aplikacije koje trebaju pohraniti značajnu količinu podataka na strani klijenta.
- Mogu li pohraniti funkcije u ili ?
- Ne, funkcije se ne mogu pohraniti izravno u web pohranu. Kôd funkcije možete pohraniti kao niz i koristiti ponovno ga izraditi, ali to se općenito ne preporučuje zbog sigurnosnih rizika.
- Kako mogu rukovati kružnim referencama u objektima?
- Koristite knjižnice poput ili koji su dizajnirani za rukovanje kružnim referencama u JavaScript objektima.
- Za što je ograničenje pohrane ?
- Ograničenje pohrane za obično je oko 5 MB, ali može varirati između preglednika.
- Mogu li komprimirati podatke prije pohranjivanja?
- Da, možete koristiti knjižnice poput za komprimiranje vaših podataka prije pohranjivanja ili .
- Kako mogu pohraniti niz objekata?
- Pretvorite niz u JSON niz pomoću prije nego što ga spremite u ili .
- Je li sigurno pohranjivati osjetljive podatke ?
- Ne, nije sigurno pohranjivati osjetljive podatke budući da je dostupan putem JavaScripta i može biti ugrožen ako web mjesto bude napadnuto.
- Mogu li koristiti preko različitih domena?
- Ne, je ograničen na isto podrijetlo, što znači da mu se ne može pristupiti preko različitih domena.
- Što se događa ako korisnik izbriše podatke preglednika?
- Svi podaci pohranjeni u i bit će uklonjen ako korisnik izbriše podatke preglednika.
Učinkovito pohranjivanje i dohvaćanje objekata u HTML5 web pohrani zahtijeva pretvaranje objekata u JSON nizove s a zatim ih raščlaniti natrag s . Ova metoda osigurava da podaci ostanu netaknuti i upotrebljivi u različitim sesijama preglednika. Razumijevanjem i korištenjem ovih tehnika, programeri mogu iskoristiti localStorage i sessionStorage za složenije zadatke upravljanja podacima, poboljšavajući funkcionalnost i performanse svojih web aplikacija.