smalljs$mol搜尋⌘ K文件遊樂場比較生態系統關於ZH_HK
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.