localStorage
Dauer: 10 Minuten
Ziel: Daten in localStorage speichern
Vorbemerkung: Eigentlich genügt der auf der vorigen Seite gezeigte
Ansatz (JSON aus Datei laden und dort speichern). Es ist aber trotzdem
nützlich, localStorage zu kennen (z.B. für die Webentwicklung).
Bei der Programmierung mit
JavaScript im Browser steht ein Objekt namens
localStorage zur Verfügung, in dem Daten
gespeichert werden können.
Im Live Coding wird localStorage in der Konsole
der DevTools eines Browsers vorgeführt.
Es gibt ein Open-Source-Projekt namens
node-localstorage auf GitHub, das die
Funktionalität von
localStorage für Node.js-Projekte bereitstellt.
In Node.js wird die Bibliothek node-localstorage durch
folgenden Terminal-Befehl im Projektverzeichnis
installiert:
npm install node-localstorageDie Einbindung von localStorage kann so
mit erfolgen:
import { LocalStorage } from 'node-localstorage';
const localStorage = new LocalStorage('./database');Hierdurch wird ein neues Verzeichnis database
in unserem Projekt erstellt. In diesem werden
die Daten in Dateien als Strings bzw. Text
gespeichert. Dies erfolgt mit der Methode
localStorage.setItem():
localStorage.setItem("college", "DHBW Lörrach");
localStorage.setItem("students", "2000");localStorage.setItem hat zwei Parameter:
- Name des Schlüssels (key)
- der zu speichernde Wert (value)
Durch das obige Beispiel entstehen zwei Dateien
im Verzeichnis database:
collegestudents
in denen die entsprechenden Werte zu finden sind,
die bei dem Aufruf von localStorage.setItem als
zweites Argument angegeben wurden.
Mit localStorage.getItem kann unter Angabe des
passenden Schlüssels der gespeicherte Wert aus
der Datenbank geladen werden:
const data1 = localStorage.getItem("college");
const data2 = localStorage.getItem("students");Wenn wir komplexere Datenstrukturen haben,
dann empfiehlt es sich, die Daten mit JSON.stringify
als JSON-String umzuwandeln und zu speichern:
const myContacts = [
{
id: 1,
name: "Alice"
},
{
id: 2,
name: "Bob"
}
];
const jsonContacts = JSON.stringify(myContacts);
localStorage.setItem("contacts", jsonContacts);Die Werte aus der Datenbank sind textbasierte
JSON-Strings und können nach dem Auslesen durch
JSON.parse() in JavaScript-Objekte umgewandelt
werden:
const dataString = localStorage.getItem("contacts");
const contacts = JSON.parse(dataString);JSON und die Methoden JSON.stringify() bzw.
JSON.parse() werden auf der vorigen Seite beschrieben.
Jedes Mal, wenn sich die Daten ändern, dann
sollten diese im localStorage abgespeichert
werden:
// Neuer Kontakt dem Array hinzufügen
contacts.push({id:3, name:"Charlie"});
const jsonStr = JSON.stringify(contacts);
localStorage.setItem("contacts", jsonStr);
// oder als eine Anweisung zusammengefasst:
// localStorage.setItem("contacts", JSON.stringify(contacts));Mit localStorage.setItem("contacts") werden
die bestehenden Daten überschrieben. Die eigentliche
Verwaltung der Daten findet also in JavaScript statt
und localStorage wird lediglich für die persistente
Speicherung der Daten eingesetzt.
Für unser Programm genügt meistens localStorage,
weil das Programm nur von einer Person verwendet
wird und weil die Datenmenge und -struktur eher
überschaubar ist. Für eine anspruchsvollere
Datenverarbeitung sind andere Ansätze wie z.B.
relationale Datenbanken mit SQL besser geeignet.
Weitere Bemerkungen:
localStoragespeichert lediglich String bzw. Text ab.localStoragespeichert die Daten in Dateien, die somit im Projekt auch nach einem Neustart erhalten bleiben.localStorage.setItem()überschreibt bestehende Daten.localStorage.clear()löscht ALLE Daten imlocalStorage.- Browser haben ein vordefiniertes
localStorage-Objekt, dessen API in der Bilbiotheknode-localstoragefür Node.js nachgebildet wird.
Es bietet sich an, für den Umgang mit localStorage
eine eigene Datei zu erstellen, in der der
Datenbankzugriff durch
passende Funktionen erfolgt. Durch
import/export
können diese Funktionen in anderen Dateien/Modulen
verwendet werden.
Dies wird auch vorgeführt.
Mehr zu localStorage:
- Die Bibliothek
node-localstorageauf GitHub: https://github.com/lmaccherone/node-localstorage localStorageim Browser bei javascript.info: https://javascript.info/localstorage