itthon / Közösségi média / Az ügyféloldali adattárolási lehetőségek áttekintése. helyi tárhely html5 helyi tárhely

Az ügyféloldali adattárolási lehetőségek áttekintése. helyi tárhely html5 helyi tárhely

A teendőlista-alkalmazás létrehozása általában az első alkalmazás, amelyet a JavaScript tanulása során készít, de ezekkel az alkalmazásokkal az a probléma, hogy az oldal újratöltésekor az összes lista eltűnik.
Van egy egyszerű megoldás - helyi tárhely használata. A helyi tárolás előnye, hogy a felhasználó számítógépén tárolhatunk adatbiteket, és az oldal újratöltésekor minden feladatlista a helyén marad.

Mi az a helyi tárhely?

A helyi tárolás a tárolóhálózat része, amely maga is a HTML5 specifikáció része. Két lehetőség van az adatok BOM-ban való tárolására:

  • Helyi tárolás: Lejárati dátum nélkül tárolja az adatokat, és ezt a lehetőséget fogjuk használni, mert azt szeretnénk, hogy adataink a lehető leghosszabb ideig az oldalon maradjanak.
  • Munkamenet tárolása: Csak egy munkamenethez menti az adatokat, így ha a felhasználó bezárja és újra megnyitja a lapot, minden adata elveszik.

Egyszerűen fogalmazva, a webtárhely csak egy névvel rendelkező kulcs/érték párokat tárol helyileg, és a cookie-kkal ellentétben ezek az adatok akkor is megmaradnak, ha bezárja a böngészőt vagy kikapcsolja a számítógépet.

Ha egy teendőlistán gondolkodunk, akkor a következőkre lesz szüksége:

  • Bejárat, ahol lehetőség lesz a listánk elhelyezésére
  • Enter gomb a lista hozzáadásához
  • Gomb a teljes napló törléséhez
  • Egy rendezetlen listatároló, ahol a listánk egy elemlistába kerül
  • És végül szükségünk van egy DIV-tárolóra, hogy értesítést jelenítsen meg, amikor megpróbál beírni egy üres feladatot.

Tehát a HTML-ünknek valahogy így kell kinéznie:

Ez egy meglehetősen szabványos HTML-tároló, és a JavaScript-ünkkel dinamikus tartalommal tölthetjük fel.

Mivel ebben a példában a jQuery-t fogjuk használni, azt is bele kell foglalnia a HTML-dokumentumba.

JavaScript

Ha egy egyszerű „teendőlista” alkalmazás felépítésére gondolunk, először azt kell ellenőriznünk, hogy a bemenet értéke üres-e, amikor a felhasználó az „add” vagy „check” gombra kattint:

$("#add").click(function() ( var Description = $("#leírás").val(); //ha a teendő üres if($("#leírás").val( ) == "") ( $("#alert").html(" Figyelem!Üresen hagytad a teendőt"); $("#alert").fadeIn().delay(1000).fadeOut(); return false; )

Mindössze annyit tettünk, hogy teszteltük a Hozzáadás gombra kattintást, és egy egyszerű tesztet futtattunk, hogy megnézzük, a felhasználó kitöltötte-e valamit a beviteli mezőben. Ha nem, akkor az alert div felugrik és 1000 ms-ig marad, majd eltűnik.

Következő dolgunk, hogy beszúrjuk az értékkel rendelkező listaelemet a beviteli sorba, és ezt bevezetjük, hogy amikor a felhasználó hozzáad egy feladatot, az mindig a lista elejére kerüljön, majd tárolja a listaelem a helyi tárhelyen, például:

// a listaelem hozzáadása $("#todos").prepend("

  • " + Leírás + "
  • "); // törli mindazt, ami a bemenetben van $("#form").reset(); var todos = $("#todos").html(); localStorage.setItem("todos", todos); return hamis; ));

    Amint láthatja, ez egy meglehetősen szabványos jQuery, és amikor a helyi tárhelyről van szó, tárolnunk kell a kulcsot és az értéket. A kulcs az a név, amit magunknak adunk, ebben az esetben csak "Todos"-nak hívjuk, majd meg kell határoznunk, hogy mit akarunk tárolni, ami ebben az esetben az összes HTML, ami a rendezetlen lista Todos-jában található. Mint látható, mindent rögzítettünk a jQuery-vel, végül „false”-t (false) adtunk vissza, hogy az űrlap ne adja fel, és az oldalunk ne frissüljön.

    Következő lépésünk annak ellenőrzése, hogy van-e helyben tárolva valami. Ha van, akkor fel kell tenni az oldalra, mivel a kulcsunknak a "todos" nevet adtuk, ellenőriznünk kell a létezését. Mint ez:

    // ha van valami a helyi tárolóhelyen, hogy if(localStorage.getItem("todos")) ( $("#todos").html(localStorage.getItem("todos")); )

    Ha teszteli az alkalmazásunkat, és újratölti az oldalt, látni fogja, hogy már működik. Nem kell mást tennünk, mint létrehozni egy függvényt, amely a teljes lista törléséért lesz felelős. Töröljük az összes helyi tárhelyet, újratöltjük az oldalt, hogy a változtatás érvénybe lépjen, majd a "false" értéket adjuk vissza, hogy megakadályozzuk az URL előtti hash-t:

    // az összes helyi tár törlése $("#clear").click(function() ( window.localStorage.clear(); location.reload(); return false; ));

    Teljes kód alábbiak szerint:

    $("#add").click(function() ( var Description = $("#leírás").val(); if($("#leírás").val() == "") ( $( "#alert").html(" Figyelem!Üresen hagytad a teendőt"); $("#alert").fadeIn().delay(1000).fadeOut(); return false; ) $("#todos").prepend("

  • " + Leírás + "
  • "); $("#form").reset(); var todos = $("#todos").html(); localStorage.setItem("todos", todos); return false; )); if(localStorage .getItem("todos")) ( $("#todos").html(localStorage.getItem("todos")); ) $("#clear").click(function() ( window.localStorage.clear( );Location.reload(); return false; ));

    Böngésző támogatás

    A Web Storage támogatása nagyon jó a HTML5 specifikációhoz, minden nagyobb böngésző támogatja, sőt az IE8 is.

    Az előző oktatóanyagban tárgyalt cookie-k nagyon korlátozottak: egy cookie csak 4096 karakterből állhat, a cookie-k száma domainenként 30-50 körül lehet böngészőtől függően. Ezért sajnos, de nem lehet ott sok információt tárolni. Történelmileg így történt.

    E korlátozás megkerülésére a böngészőknek van egy alternatívája a cookie-k helyett – ezt helyi tárhelynek hívják. A helyi tárolóban 5-10 megabájtnyi információt, vagy akár többet is tárolhatunk hosszú ideig.

    Munka a helyi tárolóval

    A helyi tároláshoz a böngészőbe épített localStorage objektumot kell használni. 4 könnyen érthető módszere van. Itt vannak:

    //Az érték tárolása: localStorage.setItem("Kulcs", "Érték"); //Az érték lekérése: var value = localStorage.getItem("Key"); //Érték eltávolítása: localStorage.removeItem("Kulcs"); //Az összes tárhely törlése: localStorage.clear();

    VAL VEL helyi raktárúgy is dolgozhat, mint egy normál tömbnél:

    //Az érték tárolása: localStorage["Key"] = "Érték"; //Az érték lekérése: var value = localStorage["Kulcs"]; //Érték törlése: delete localStorage["Kulcs"];

    Kivéve az objektumot helyi raktár van egy tárgy is sessionStorage. A vele való munkavégzés ugyanúgy történik, az egyetlen különbség az, hogy az összes adat automatikusan megsemmisül, miután bezárja a böngészőt vagy a lapot. Nos, a localStorage sokáig tárolja az adatokat, amíg ezeket az adatokat a szkript törli, vagy a böngésző felhasználója a beállítások segítségével ki nem törli a helyi tárhelyet.

    Példák

    A következő példában a felhasználónevet a helyi tárhelyre írjuk:

    LocalStorage.setItem("név", "János");

    Egy idő után visszakapjuk ezt a nevet:

    Alert(localStorage.getItem("név"));

    Amint látja, itt nincs semmi bonyolult, minden sokkal egyszerűbb, mint ugyanaz a munka a sütikkel.

    Tárgyak mentése

    A helyi tárhely nem képes objektumok és JavaScript tömbök bár ez gyakran kényelmes. De van egy mód - ezeket az adatokat JSON formátumba kell szerializálni -, akkor kapsz egy karakterláncot, amely már tárolható a localStorage-ban. Aztán amikor vissza kell szereznünk ezt az objektumot – a JSON-ból visszaalakítjuk a karakterláncot objektummá –, és nyugodtan használjuk.

    Nézzük meg ezt a folyamatot egy példán keresztül. Sorolja fel az objektumot, és mentse el a helyi tárhelyre:

    //Adott egy objektum: var obj = (név: "Ivan", arr: ); //Serializálása a következőre: "("név": "John", "arr": )": var json = JSON.stringify(obj); //Írjon a localStorage-ba az obj kulccsal: localStorage.setItem("obj", json);

    Egy idő után visszakapjuk az objektumot:

    //Adatok visszakérése a localStorage-ból JSON-ként: var json = localStorage.getItem("obj"); //Alakítsa vissza őket JavaScript objektummá: var obj = JSON.parse(json); konzolnapló(obj);

    További jellemzők

    A tárhelyen lévő rekordok számának meghatározása: alert(localStorage.length).

    Kulcs nevének meghatározása a szám alapján: alert(localStorage.key(szám)).

    Tárolási műveletek végrehajtásakor egy esemény aktiválódik raktáron. Ha ehhez az eseményhez köt egy függvényt, akkor a következő tulajdonságokkal rendelkező Event objektum lesz elérhető benne:

    függvény func(event) ( var kulcs = esemény.kulcs; //változható adatok kulcsa var oldValue = esemény.oldÉrték; //régi érték var newValue = esemény.újÉrték; //új érték var storageArea = event.storageArea; // tárolási terület)

    Hozzáadás. anyag

    Tömb tárolása a helyi tárolóban: https://youtu.be/sYUILPMnrIo

    Mit csinálsz ezután:

    Kezdje el a feladatok megoldását az alábbi linken: feladatok a leckéhez.

    Ha minden eldőlt, folytassa egy új téma tanulmányozásával.

    Egyes videók megelőzhetik önmagunkat, mivel az oktatóanyag ezen pontján még nem foglalkoztunk az ES6-tal. Csak hagyd ki ezeket a videókat, nézd meg később.

    Elküldött egy cikket a HTML5 LocalStorage böngészőkben található történetével. Adjuk meg neki a szót.

    Igyekeztem a legegyszerűbb és legérthetőbb útmutatót írni a localStorage technológia használatához. A cikk meglehetősen kicsinek bizonyult, mivel maga a technológia és a vele való munkavégzés eszközei nem tartalmaznak semmi bonyolultat. A kezdéshez csak egy kicsit ismernie kell a JavaScriptet. Adjon tehát 10 percet ennek a cikknek, és nyugodtan hozzáadhatja önéletrajzához a „Tudom, hogyan kell dolgozni a localStorage-szal” sort.

    Mi az a localStorage?

    Így néz ki egy JavaScript objektum:

    Var myCar = ( kerekek: 4, ajtók: 4, motor: 1, név: "Jaguar")

    És így néz ki a JSON. Nagyjából ugyanaz, mint egy normál js objektum, csak minden tulajdonságot idézőjelbe kell tenni.

    ( "firstName": "Ivan", "lastName": "Ivanov", "dress": ( "utcacím": "Moskovskoye sh., 101, kv.101", "city": "Leningrád", "postalCode": 101101 ), "phoneNumbers": [ "812 123-1234", "916 123-4567" ] )

    A localStorage megértéséhez képzelje el, hogy valahol a böngészőjében van egy ilyen objektum, amelyet használhatunk. Ugyanakkor ez az objektum nem törli az oda írt értékeket, ha újratöltjük az oldalt, vagy akár teljesen bezárjuk a böngészőt.

    JavaScriptben beszélve a localStorage a böngésző globális objektumának (ablak) tulajdonsága. A window.localStorage vagy csak a localStorage néven érhető el.

    Azt is érdemes megemlíteni, hogy a böngészőnek van egy localStorage klónja, amelyet sessionStorage-nak hívnak. Az egyetlen különbség az, hogy az utóbbi csak egy laphoz (munkamenethez) tárol adatokat, és amint bezárjuk a lapot, egyszerűen felszabadítja a helyet.

    Lássuk őt élőben. Például be Google Chrome meg kell nyitnia a DevTools (F12) alkalmazást, lépjen az "Erőforrások" fülre, és a bal oldali panelen látni fogja a tartomány helyi tárhelyét és az abban található összes értéket.

    Egyébként tudnia kell, hogyan működik a localStorage a tartományokkal. A böngésző minden tartományhoz létrehoz egy saját localStorage objektumot, amelyet csak az adott tartományban lehet szerkeszteni vagy megtekinteni. Például a mydomain-1.com nem tud hozzáférni a mydomain-2.com helyi tárhelyéhez.

    Miért van szükségem helyi tárhelyre?

    A LocalStorage egyetlen dologra van szükség – bizonyos adatok tárolására a felhasználói munkamenetek között. Ezer és egy dologra gondolhat, amit a böngésző helyi tárhelyén tárolhat. Például böngészőjátékok, amelyek mentésként használják, vagy rögzítik azt a pillanatot, amikor a felhasználó megállt egy videó megtekintése közben, különféle űrlapok adatai stb.

    Hogyan kezdhetem el a localStorage használatát?

    Nagyon egyszerű.

    A localStorage használata nagyon hasonlít a JavaScript objektumokkal való munkához. Számos módszer létezik a munkára.

    localStorage.setItem("kulcs", "érték")

    Módszer, amely hozzáadja a localStorage-ot új kulcsértékkel (és ha már létezik ilyen kulcs, akkor felülírja egy új értékkel). Írjuk például, hogy localStorage.setItem('myKey', 'myValue');

    localStorage.getItem("kulcs")

    Egy bizonyos értéket kulcsonként veszünk ki a tárolóból.

    localStorage.removeItem("Kulcs")

    Törölje a kulcsot

    localStorage.clear()

    Az összes tárhely törlése

    Most megnyithat egy lapot a böngésző helyi tárolójával, és gyakorolhatja az adatok írását és lekérését erről a tárhelyről. Ha valami, akkor az összes kódot egy js fájlba írjuk.

    //Érték hozzáadása vagy módosítása: localStorage.setItem("myKey", "myValue"); //most a "myKey" kulcs a "myValue" értékkel a localStorage-ban van tárolva //Nyomtassa ki a konzolba: var localValue = localStorage.getItem("myKey"); console.log(localValue); //"myValue" //delete: localStorage.removeItem("myKey"); //összes tárhely törlése localStorage.clear() Ugyanaz, de szögletes zárójelekkel: localStorage["Kulcs"] = "Érték" //állítsa be a localStorage["Kulcs"] értékét //Az érték lekérése delete localStorage["Kulcs" ] // Érték törlése

    Azt is szeretném megjegyezni, hogy a localStorage remekül működik beágyazott struktúrákkal, például objektumokkal.

    //objektum létrehozása var obj = ( item1: 1, item2: , item3:"hello" ); var serialObj = JSON.stringify(obj); //szerializálása localStorage.setItem("myKey", serialObj); //írja a tárolóba a "myKey" kulccsal var returnObj = JSON.parse(localStorage.getItem("myKey")) //elemzi vissza egy objektummá

    Azt is tudnia kell, hogy a böngészők 5 MB-ot foglalnak le a localStorage számára. És ha túllépi, QUOTA_EXCEEDED_ERR kivételt kap. Segítségével egyébként ellenőrizheti, hogy van-e még hely a tárolójában.

    Próbáld ki ( localStorage.setItem("kulcs", "érték"); ) catch (e) ( if (e == QUOTA_EXCEEDED_ERR) ( alert("Korlát túllépve"); ) )

    Konklúzió helyett

    Szeretném, ha a fejlesztők ebből a rövid cikkből egy egyszerű következtetést vonnának le maguknak, hogy ezt a technológiát már with may and main használható projektjeiben. Jó szabványosítással és kiváló támogatással rendelkezik, ami csak idővel fejlődik.