smalljs$mol搜索⌘ K文档演练场对比生态系统关于ZH
Giper BazaGetting Started介绍心智模型快速上手从 TypeScript 到 view.tree项目结构工具链Essentials安装视图状态与响应式路由渲染测试部署故障排查Data数据获取数据模式Giper BazaMore展示来自 React、Vue 和 Svelte食谱Advanced插件模块元数据离线幽灵视图About常见问题团队发布API$mol_button_major$mol_button_minor$mol_string$mol_number$mol_text$mol_paragraph$mol_list$mol_row$mol_link$mol_check$mol_switch$mol_select$mol_scroll$mol_page$mol_pick

Giper Baza

Giper Baza 是一个独立的、可选的项目——并不是 $mol 的内置组成部分。其作者将它描述为一个具有无冲突实时同步的去中心化高可用数据库:一个在本地持久化、无需中心服务器即可在客户端之间复制的 CRDT 存储,带有数字签名和端到端加密。构建 $mol 应用从不需要它;只有当多个客户端或设备必须共享同一份实时数据时才使用它。只是想让应用在没有网络时也能继续工作?那是纯粹的离线,$mol 用一个 service worker 来处理——参见 离线。Giper Baza 更进一步:在客户端之间同步数据,而不是缓存单个客户端的资源。当你确实用它来建模数据时,实体看起来就像普通的响应式属性,而复制自然而然地发生。本页介绍 API 的形态。Giper Baza 是一个大主题——请把这当作一张地图,而不是完整的疆域。

定义一个实体

实体是一个纯模式——一组带类型的字段。把行为放在外面;在你的视图里做读取和写入。1namespace $ {2 export class $my_task extends $giper_baza_entity.with( {3 Title: $giper_baza_atom_text,4 Done: $giper_baza_atom_bool,5 CreatedAt: $giper_baza_atom_time,6 } ) {}7}每个字段都是一个原子——一个带类型值的已同步单元。

读取与写入

获取存储,取到一个实体列表,并对它们做响应式的映射:1 @ $mol_mem2 tasks() {3 return this.tasks_list().remote_list()4 }5 6 @ $mol_mem_key7 task_done( id: string, next?: boolean ) {8 const task = this.task( id )9 if( next !== undefined ) task.Done( null )!.val( next )10 return task.Done()?.val() ?? false11 }读取 Done()?.val() 会得到当前值;写入 Done(null)!.val(next) 会设置它。任何读取该原子的视图都会在它——或远端对等方——改变它时重新渲染。

创建与删除

1 @ $mol_action2 task_add( title: string ) {3 const task = this.tasks_list().make( [ [ null, $giper_baza_rank_read ] ] )!4 task.Title( null )!.val( title )5 task.Done( null )!.val( false )6 }7 8 @ $mol_action9 task_remove( id: string ) {10 this.tasks_list().cut( this.task( id ).link() )11 }
在 GitHub 上编辑此页这有帮助吗?上一页数据模式下一页展示
本页内容定义一个实体读取与写入创建与删除同步是自动的接下来去哪儿?
Type to search the documentation.