Ich möchte eine Web-App erstellen, die offline funktionieren soll.
+----------------+ +---------------+
| Browser | | Server |
| | | |
| +---------+ | | |
| | | | | |
| | GUI | | | |
| | | | | |
| | | | | +----------+ |
| +---------+ | | | DB | |
| | | | | | |
| | | | | | |
| +---------+ | | | | |
| | DB | | Internet | | | |
| | | | -------------- | | | |
| | | | https | | | |
| +---------+ | | +----------+ |
+----------------+ +---------------+
Ich suche nach einem Framework, das in modernen Browsern funktioniert und eine dauerhafte Datenspeicherung bieten kann, auch wenn das Gerät offline ist.
Erforderliche Funktionen:
Verwandt:
PouchDB hat eine Synchronisierungsfunktion: https://pouchdb.com/guides/replication.html
Das Diagramm ähnelt dem in der Frage:
Die PouchDB ist eine Javascript-Implementierung von CouchDB, die damit API-kompatibel ist. Sie können also CouchDB auf der Serverseite und Pouch in der Anwendung selbst verwenden und sobald die Anwendung online geht, können Sie beide synchronisieren. Dies ist besonders nützlich für progressive Webanwendungen, die auf einen Offline-First-Ansatz setzen.
PouchDB bietet eine vollständig asynchrone API. Dadurch wird sichergestellt, dass die Benutzeroberfläche nicht stottert, wenn Sie mit PouchDB sprechen, da das DOM nicht durch Datenbankoperationen blockiert wird.
React Query wird oft als die fehlende Bibliothek zum Abrufen von Daten für React beschrieben, aber in technischer Hinsicht macht es das Abrufen, Zwischenspeichern, Synchronisieren und Aktualisieren des Serverstatus in Ihren React-Anwendungen zum Kinderspiel.
Redux-fortbestehen. Sie können mehrere Speicher-Backends verwenden:
https://github.com/rt2zz/redux-persist
PouchDB ist eine davon.
Ein Offline-First-JavaScript-Client für Kinto.
Hinweis: Wenn Sie nach einem reinen HTTP-js-Client für Kinto suchen, sehen Sie sich kinto-http.js an.
Die Idee ist, Daten standardmäßig lokal im Browser zu speichern und sie dann explizit mit dem Server zu synchronisieren, wenn die Konnektivität gewährleistet ist.
Es gibt einen Vergleich von Kinto, PouchDB und anderen Lösungen: Vergleich
Offix: Offline-GraphQL-Client und -Server
https://github.com/aerogear/offix
Offix erweitert Apollo GraphQL zum Erstellen von Offline-Erfahrungen mit vollem Funktionsumfang.
Merkmale:
Offline-Unterstützung.
Mutationen werden im Offline-Modus beibehalten.
Offline-Listener und Workflows für eine nahtlose Benutzeroberfläche.
Flexible, sofort einsatzbereite Konfliktlösungsimplementierungen Abonnements und Binärdateien
Upload, der offline funktioniert.
Unterstützung mehrerer Plattformen.
Funktioniert mit Web, Cordova, Kondensator und React Native.
Framework-unabhängig (funktioniert mit React, Angular und Vue) Funktioniert mit Apollo GraphQL Server und Prisma (Yoga)