Praca z obiektami w magazynie internetowym
Pracując z HTML5 localStorage lub sessionStorage, programiści często napotykają problemy podczas próby przechowywania obiektów JavaScript. W przeciwieństwie do prymitywnych typów danych i tablic, obiekty wydają się być konwertowane na ciągi znaków, co może prowadzić do zamieszania i nieoczekiwanych wyników.
Zrozumienie, jak prawidłowo przechowywać i pobierać obiekty za pomocą Web Storage, ma kluczowe znaczenie dla wielu aplikacji internetowych. W tym przewodniku dowiesz się, dlaczego obiekty są konwertowane na ciągi znaków, i przedstawisz proste obejście, które zapewni prawidłowe przechowywanie i pobieranie obiektów.
Komenda | Opis |
---|---|
JSON.stringify() | Konwertuje obiekt lub wartość JavaScript na ciąg JSON, umożliwiając przechowywanie w localStorage lub sessionStorage. |
localStorage.setItem() | Przechowuje parę klucz-wartość w obiekcie localStorage, umożliwiając przechowywanie danych w sesjach przeglądarki. |
localStorage.getItem() | Pobiera wartość związaną z danym kluczem z localStorage. |
JSON.parse() | Analizuje ciąg JSON i konwertuje go z powrotem na obiekt JavaScript, umożliwiając pobieranie złożonych struktur danych. |
sessionStorage.setItem() | Przechowuje parę klucz-wartość w obiekcie sessionStorage, umożliwiając przechowywanie danych przez cały czas trwania sesji strony. |
sessionStorage.getItem() | Pobiera wartość związaną z danym kluczem z sessionStorage. |
Efektywne przechowywanie i odzyskiwanie obiektów w pamięci internetowej
W JavaScript, localStorage I sessionStorage to obiekty pamięci internetowej, które umożliwiają zapisywanie par klucz-wartość w przeglądarce. Jednak te rozwiązania do przechowywania obsługują tylko ciągi znaków, co oznacza, że próba bezpośredniego przechowywania obiektu JavaScript spowoduje konwersję obiektu na reprezentację ciągu, np. [object Object]. Aby efektywnie przechowywać obiekty, musisz przekonwertować je na ciąg JSON za pomocą JSON.stringify(). Ta metoda pobiera obiekt JavaScript i zwraca ciąg JSON, w którym można go zapisać localStorage Lub sessionStorage.
Aby odzyskać przechowywany obiekt, należy przekonwertować ciąg JSON z powrotem na obiekt JavaScript za pomocą JSON.parse(). Ta metoda pobiera ciąg JSON i zwraca odpowiedni obiekt JavaScript. Skrypty podane w powyższych przykładach demonstrują ten proces. Najpierw tworzony jest obiekt, który jest konwertowany na ciąg JSON za pomocą JSON.stringify() przed zapisaniem w localStorage za pomocą localStorage.setItem(). Aby pobrać obiekt, pobierany jest ciąg JSON localStorage za pomocą localStorage.getItem() a następnie ponownie przeanalizowany do obiektu JavaScript za pomocą JSON.parse().
Przechowywanie i pobieranie obiektów JavaScript w localStorage
Używanie JavaScript i JSON dla 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 }
Przechowywanie i pobieranie obiektów JavaScript w sessionStorage
Używanie JavaScript i JSON dla 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 }
Zaawansowane techniki przechowywania danych w sieci Web
Podczas korzystania z HTML5 localStorage I sessionStorageprogramiści często muszą przechowywać bardziej złożone dane niż tylko ciągi znaków. Chociaż serializacja i deserializacja JSON są skuteczne w przypadku podstawowych obiektów, bardziej zaawansowane scenariusze mogą wymagać dodatkowych rozważań. Na przykład, jeśli pracujesz z głęboko zagnieżdżonymi obiektami lub obiektami zawierającymi metody, potrzebujesz bardziej wyrafinowanego podejścia. Jedną z powszechnych technik jest użycie biblioteki takiej jak Flatted Lub circular-json do obsługi odwołań cyklicznych i bardziej złożonych struktur obiektów.
Biblioteki te stanowią rozszerzenie standardu JSON.stringify() I JSON.parse() metody wspierające serializację i deserializację obiektów za pomocą odwołań cyklicznych, umożliwiając bardziej niezawodne rozwiązanie do przechowywania obiektów w pamięci internetowej. Kolejną kwestią jest kompresja danych. W przypadku dużych obiektów można używać bibliotek takich jak LZ-String kompresować dane przed ich zapisaniem localStorage Lub sessionStorage, zmniejszając ilość wykorzystywanej przestrzeni. Może to być szczególnie przydatne w przypadku aplikacji, które muszą przechowywać znaczną ilość danych po stronie klienta.
Często zadawane pytania dotyczące przechowywania obiektów w magazynie internetowym
- Czy mogę przechowywać funkcje w localStorage Lub sessionStorage?
- Nie, funkcji nie można przechowywać bezpośrednio w pamięci internetowej. Możesz zapisać kod funkcji jako ciąg i użyć eval() aby go odtworzyć, ale generalnie nie jest to zalecane ze względu na ryzyko bezpieczeństwa.
- Jak obsługiwać odniesienia cykliczne w obiektach?
- Użyj bibliotek takich jak Flatted Lub circular-json które są przeznaczone do obsługi odwołań cyklicznych w obiektach JavaScript.
- Do czego służy limit przechowywania localStorage?
- Limit przechowywania dla localStorage wynosi zazwyczaj około 5 MB, ale może się różnić w zależności od przeglądarki.
- Czy mogę skompresować dane przed ich zapisaniem?
- Tak, możesz używać bibliotek takich jak LZ-String do kompresji danych przed ich zapisaniem localStorage Lub sessionStorage.
- Jak przechowywać tablicę obiektów?
- Konwertuj tablicę na ciąg JSON za pomocą JSON.stringify() przed przechowywaniem go localStorage Lub sessionStorage.
- Czy przechowywanie wrażliwych danych jest bezpieczne? localStorage?
- Nie, przechowywanie wrażliwych danych nie jest bezpieczne localStorage ponieważ jest dostępny poprzez JavaScript i może zostać naruszony w przypadku ataku na witrynę.
- Mogę uzyć localStorage w różnych domenach?
- NIE, localStorage jest ograniczone do tego samego źródła, co oznacza, że nie można uzyskać do niego dostępu w różnych domenach.
- Co się stanie, jeśli użytkownik wyczyści dane przeglądarki?
- Wszystkie dane zapisane w localStorage I sessionStorage zostaną usunięte, jeśli użytkownik wyczyści dane swojej przeglądarki.
Końcowe przemyślenia na temat zarządzania magazynowaniem obiektów
Efektywne przechowywanie i pobieranie obiektów w pamięci internetowej HTML5 wymaga konwersji obiektów na ciągi JSON JSON.stringify() a następnie ponownie je analizując JSON.parse(). Ta metoda gwarantuje, że dane pozostaną nienaruszone i będzie można ich używać w różnych sesjach przeglądarki. Rozumiejąc i wykorzystując te techniki, programiści mogą wykorzystać localStorage i sessionStorage do bardziej złożonych zadań związanych z zarządzaniem danymi, zwiększając funkcjonalność i wydajność swoich aplikacji internetowych.