KV Storage

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

localStorage ist...

  • Gut! Es ist eine unglaublich einfach zu bedienende API.
  • localStorage.setItem('name', 'Chris'); let name = localStorage.getItem('name');
  • Schlecht! Philip Walton erklärt warum

localStorage ist eine synchrone API, die den Haupt-Thread blockiert, und jedes Mal, wenn Sie darauf zugreifen, verhindern Sie potenziell, dass Ihre Seite interaktiv wird.

Chrome hat eine Idee (hier ist der Vorschlag) für deren Neuerfindung. Letztendlich ist die API sogar noch einfacher.

import { storage } from 'std:kv-storage';
storage.set('name', 'Chris');
storage.get('name');

Aber! Sie ist asynchron, daher kann ich await davor verwenden, diese Dinge zu tun, ohne etwas zu blockieren. Diese Demo funktioniert derzeit in Chrome Canary.

Siehe den Pen
eXadrq
von Chris Coyier (@chriscoyier)
auf CodePen.

Was zum Teufel ist mit dieser Zeile los?

import { storage } from 'std:kv-storage';

Sie nennen es ein „eingebautes Modul“. Mit anderen Worten, etwas, das Sie importieren können, das aber keine Netzwerkanfragen stellt, da es in den Browser integriert ist. Ein ziemlich interessanter Ansatz.

Philip fährt fort

Das Nicht-Exponieren von eingebauten Modulen global hat viele Vorteile: Sie fügen keinem neuen JavaScript-Laufzeitkontext (z. B. einem neuen Tab, Worker oder Service Worker) Overhead beim Start hinzu und sie verbrauchen keinen Speicher oder CPU, es sei denn, sie werden tatsächlich importiert. Darüber hinaus besteht nicht die Gefahr von Namenskollisionen mit anderen in Ihrem Code definierten Variablen.

Dies ist auf indexedDB aufgebaut. Wenn Sie also damit experimentieren und die Werte löschen müssen oder Ähnliches, tun Sie dies dort (DevTools > Application > Storage > IndexedDB). Es wird faszinierend sein zu sehen, ob sich das durchsetzt und ob neue JavaScript-Funktionen als eingebaute Module ausgeliefert werden. Ich habe keine Ahnung, ob andere Browser dies für eine gute Idee halten oder nicht.

Direkter Link →