Гипер База — это отдельный, необязательный проект, а не встроенная часть $mol. Авторы описывают его как децентрализованную высокодоступную базу данных с бесконфликтной синхронизацией в реальном времени: CRDT-хранилище, которое сохраняется локально и реплицируется между клиентами без центрального сервера, с цифровыми подписями и сквозным шифрованием. Для приложения на $mol он никогда не нужен; берите его только тогда, когда нескольким клиентам или устройствам нужно делить одни и те же живые данные.Просто хотите, чтобы приложение продолжало работать без сети? Это обычный офлайн, и $mol обеспечивает его через service worker — см. Офлайн. Гипер База — следующий шаг: синхронизация данных между клиентами, а не кэширование ресурсов одного клиента.Когда вы действительно моделируете с ней данные, сущности выглядят как обычные реактивные свойства, а репликация просто происходит.Эта страница знакомит с формой API. Гипер База — большая тема; считайте это картой, а не всей территорией.
Сущность — это чистая схема, набор типизированных полей. Держите поведение вне неё; чтение и запись делайте во вью.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}Каждое поле — это атом, синхронизируемая ячейка с типизированным значением.
Возьмите хранилище, доберитесь до списка сущностей и реактивно пройдитесь по ним: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() даёт текущее значение; запись Done(null)!.val(next) его задаёт. Любое вью, читающее атом, перерисовывается, когда его меняет он сам — или удалённый пир.