Giper Baza ist ein eigenständiges, optionales Projekt — kein fester Bestandteil von $mol. Seine Autoren beschreiben es als dezentrale, hochverfügbare Datenbank mit konfliktfreier Echtzeit-Synchronisation: ein CRDT-Speicher, der lokal persistiert und ohne zentralen Server zwischen Clients repliziert, mit digitalen Signaturen und Ende-zu-Ende-Verschlüsselung. Für den Bau einer $mol-App brauchen Sie es nie; greifen Sie nur dann darauf zurück, wenn mehrere Clients oder Geräte dieselben Live-Daten teilen müssen.Sie möchten nur, dass Ihre App ohne Netzwerk weiterläuft? Das ist einfaches Offline, und $mol erledigt es mit einem Service Worker — siehe Offline. Giper Baza geht einen Schritt weiter: Daten zwischen Clients synchronisieren, statt die Assets eines einzelnen Clients zwischenzuspeichern.Wenn Sie damit tatsächlich Daten modellieren, sehen Entitäten aus wie gewöhnliche reaktive Eigenschaften, und die Replikation geschieht einfach.Diese Seite stellt die Form der API vor. Giper Baza ist ein großes Thema — betrachten Sie dies als Karte, nicht als das gesamte Gebiet.
Eine Entität ist ein reines Schema — eine Menge typisierter Felder. Halten Sie Verhalten heraus; erledigen Sie Lesen und Schreiben in Ihren Ansichten.1namespace ${2export class $my_taskextends$giper_baza_entity.with({3Title:$giper_baza_atom_text,4Done:$giper_baza_atom_bool,5CreatedAt:$giper_baza_atom_time,6}){}7}Jedes Feld ist ein Atom — eine synchronisierte Zelle mit typisiertem Wert.
Holen Sie sich den Speicher, erreichen Sie eine Liste von Entitäten und mappen Sie reaktiv über sie:1@ $mol_mem2tasks(){3return this.tasks_list().remote_list()4}56@ $mol_mem_key7task_done(id:string,next?:boolean){8const task=this.task(id)9if(next!==undefined)task.Done(null)!.val(next)10return task.Done()?.val()??false11}Done()?.val() zu lesen gibt den aktuellen Wert; Done(null)!.val(next) zu schreiben setzt ihn. Jede Ansicht, die das Atom liest, wird neu gerendert, wenn sie — oder ein entfernter Peer — es ändert.