Чување ЈаваСцрипт објеката у ХТМЛ5 лоцалСтораге и сессионСтораге

Чување ЈаваСцрипт објеката у ХТМЛ5 лоцалСтораге и сессионСтораге
Чување ЈаваСцрипт објеката у ХТМЛ5 лоцалСтораге и сессионСтораге

Рад са објектима у веб складишту

Када раде са ХТМЛ5 лоцалСтораге или сессионСтораге, програмери често наилазе на проблеме када покушавају да сачувају ЈаваСцрипт објекте. За разлику од примитивних типова података и низова, чини се да су објекти конвертовани у низове, што може довести до забуне и неочекиваних резултата.

Разумевање како правилно складиштити и преузимати објекте помоћу Веб Стораге-а је кључно за многе веб апликације. Овај водич ће истражити зашто се објекти претварају у стрингове и пружити једноставно решење како би се осигурало да се ваши објекти правилно чувају и преузимају.

Цомманд Опис
JSON.stringify() Конвертује ЈаваСцрипт објекат или вредност у ЈСОН стринг, омогућавајући складиштење у лоцалСтораге или сессионСтораге.
localStorage.setItem() Чува пар кључ/вредност у објекту лоцалСтораге, омогућавајући подацима да трају у свим сесијама прегледача.
localStorage.getItem() Преузима вредност придружену датом кључу из лоцалСтораге.
JSON.parse() Рашчлањује ЈСОН стринг и конвертује га назад у ЈаваСцрипт објекат, омогућавајући преузимање сложених структура података.
sessionStorage.setItem() Чува пар кључ/вредност у објекту сессионСтораге, омогућавајући подацима да трају током сесије странице.
sessionStorage.getItem() Преузима вредност придружену датом кључу из сессионСтораге-а.

Ефективно складиштење и преузимање објеката у веб складишту

У ЈаваСцрипт-у, localStorage и sessionStorage су објекти веб складишта који вам омогућавају да сачувате парове кључ/вредност у прегледачу. Међутим, ова решења за складиштење подржавају само стрингове, што значи да ће покушај директног складиштења ЈаваСцрипт објекта довести до тога да објекат буде конвертован у стринг репрезентацију као што је [object Object]. Да бисте ефикасно складиштили објекте, потребно је да их конвертујете у ЈСОН стринг користећи JSON.stringify(). Овај метод узима ЈаваСцрипт објекат и враћа ЈСОН стринг у који се може ускладиштити localStorage или sessionStorage.

Да бисте преузели сачувани објекат, морате да конвертујете ЈСОН стринг назад у ЈаваСцрипт објекат користећи JSON.parse(). Овај метод узима ЈСОН стринг и враћа одговарајући ЈаваСцрипт објекат. Скрипте дате у горњим примерима демонстрирају овај процес. Прво се креира објекат и конвертује у ЈСОН стринг са JSON.stringify() пре складиштења у localStorage Користећи localStorage.setItem(). Да бисте преузели објекат, из њега се преузима ЈСОН стринг localStorage Користећи localStorage.getItem() а затим поново анализиран у ЈаваСцрипт објекат користећи JSON.parse().

Чување и преузимање ЈаваСцрипт објеката у лоцалСтораге

Коришћење ЈаваСцрипт-а и ЈСОН-а за лоцалСтораге

// 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 }

Чување и преузимање ЈаваСцрипт објеката у сессионСтораге-у

Коришћење ЈаваСцрипт-а и ЈСОН-а за сессионСтораге

// 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 }

Напредне технике за веб складиште

Када користите ХТМЛ5 localStorage и sessionStorage, програмери често морају да складиште сложеније податке од само стрингова. Док су ЈСОН серијализација и десеријализација ефикасне за основне објекте, напреднији сценарији могу захтевати додатна разматрања. На пример, ако радите са дубоко угнежђеним објектима или објектима који садрже методе, потребан вам је софистициранији приступ. Једна уобичајена техника је коришћење библиотеке као што је Flatted или circular-json за руковање кружним референцама и сложенијим структурама објеката.

Ове библиотеке проширују стандард JSON.stringify() и JSON.parse() методе које подржавају серијализацију и десеријализацију објеката са кружним референцама, омогућавајући робусније решење за складиштење објеката у веб складишту. Друго питање је компресија података. За велике објекте можете користити библиотеке попут LZ-String да компримујете податке пре него што их сачувате localStorage или sessionStorage, смањујући количину коришћеног простора. Ово може бити посебно корисно за апликације које морају да складиште значајну количину података на страни клијента.

Уобичајена питања о складиштењу објеката у веб складишту

  1. Могу ли да складиштим функције у localStorage или sessionStorage?
  2. Не, функције се не могу чувати директно у веб складишту. Можете сачувати код функције као стринг и користити eval() да га поново направите, али се то генерално не препоручује због безбедносних ризика.
  3. Како да рукујем кружним референцама у објектима?
  4. Користите библиотеке попут Flatted или circular-json који су дизајнирани да рукују кружним референцама у ЈаваСцрипт објектима.
  5. За шта је ограничење складиштења localStorage?
  6. Ограничење складиштења за localStorage је обично око 5МБ, али може да варира између претраживача.
  7. Могу ли да компримујем податке пре него што их сачувам?
  8. Да, можете користити библиотеке попут LZ-String да компримујете своје податке пре него што их сачувате localStorage или sessionStorage.
  9. Како да сачувам низ објеката?
  10. Конвертујте низ у ЈСОН стринг користећи JSON.stringify() пре него што га ускладиштите localStorage или sessionStorage.
  11. Да ли је безбедно чувати осетљиве податке localStorage?
  12. Не, није безбедно чувати осетљиве податке localStorage пошто је доступан преко ЈаваСцрипт-а и може бити компромитован ако је сајт нападнут.
  13. Могу ли да користим localStorage на различитим доменима?
  14. Не, localStorage је ограничен на исто порекло, што значи да му се не може приступити на различитим доменима.
  15. Шта се дешава ако корисник избрише податке свог претраживача?
  16. Сви подаци похрањени у localStorage и sessionStorage ће бити уклоњено ако корисник избрише податке свог претраживача.

Завршна размишљања о управљању складиштењем објеката

Ефикасно складиштење и преузимање објеката у ХТМЛ5 веб складишту захтева претварање објеката у ЈСОН низове помоћу JSON.stringify() а затим их рашчланити са JSON.parse(). Овај метод осигурава да подаци остану нетакнути и употребљиви у различитим сесијама прегледача. Разумевањем и коришћењем ових техника, програмери могу да искористе лоцалСтораге и сессионСтораге за сложеније задатке управљања подацима, побољшавајући функционалност и перформансе својих веб апликација.