A html 5 újdonságai közül az egyik igen hasznos kis jószág a storage, azaz a kliens oldali adat tárolás. Mivel a natív megoldás csak stringek tárolására használható írtam hozzá egy jQuery plugint ami teljes JSON objektumok tárolását és lekérdezését teszi lehetővé.
A sessionStorage és a localStorage arra szolgál, hogy a kliens oldalon tudjunk adatokat tárolni. Erre eddig csak cookie-val volt lehetőségünk. A storagenak két előnye is van a cookie-kkal szemben. az egyik az, hogy a storage-ban 5MB adatot tudunk tárolni ami jóval nagyobb mint a cookie-k maximális 4KB-ja. A másik előny, hogy amíg a cookie-kat a kliens mindig kiküldi a szerver felé, ha szükségünk van ott rá ha nem, a storage alapból csak a kliens oldalon létezik. Így mind a kommunikáció, mind az adatok elérése gyorsabb lesz.
Biztosan jó okuk volt arra, hogy nincs natív API arra, hogy teljes JSON objektumokat tároljunk el a storage-ban, de ez persze nem akadályozza meg a fejlesztőket abban, hogy márpedig mégiscsak tároljanak benne ilyesmiket. A kézenfekvő megoldás a JSON.stringify
és a JSON.parse
. Persze lépten-nyomon ezeket hívogatni egy idő után meglehetősen kellemetlen tud lenni. Ezt próbálja orvosolni az rStorage plugin.
A projekt elérhető a githubon.
Setter
var myObject = { level1 : { level2 : { level3 : 'level3' } } } $.localStorage('testNamespace', myObject); //setter
Getter
$.localStorage('testNamespace'); //getter $.localStorage('testNamespace.level1'); //dot notation getter
Törlés
$.localStorage.remove('testNamespace.level1.level2');
Észrevételeket, fejlesztési javaslatokat várok ide és a projekt oldalra.
Eloszor is koszi a plugin-t, hasznalom, szeretem. 🙂
Az alabbi problemaba futottam:
$.localStorage('user', userObj); // userObj egy json object
$.localStorage('user.akarmi', mezo); // az 'akarmi' kulcs nem letezik, ezert hibat dob
Ezt pl. ki tudom ugy kuszobolni, hogy:
var userObj = $.localStorage('user');
userObj.akarmi = mezo;
$.localStorage('user', userObj);
De ez egy kicsit korulmenyes. Szerinted lenne ertelme egy “append” funkcio hozzaadasanak a plugin-hez? Azaz, ha egy mar letezo object-hez szeretnek egy uj tulajdonsagot hozzafuzni, azt egyszerubben meg lehessen oldani (mint pl. a peldam masodik sora)?