Giper Baza는 별도의 선택적 프로젝트이며, $mol의 내장 구성 요소가 아닙니다. 제작자들은 이를 충돌 없는 실시간 동기화를 갖춘 탈중앙화 고가용성 데이터베이스라고 설명합니다. 중앙 서버 없이 로컬에 지속되고 클라이언트 사이에서 복제되는 CRDT 스토어로, 디지털 서명과 종단 간 암호화를 갖추고 있습니다. $mol 앱을 만드는 데는 결코 필요하지 않으며, 여러 클라이언트나 기기가 같은 실시간 데이터를 공유해야 할 때에만 사용하세요.앱이 네트워크 없이도 계속 동작하기만 바라나요? 그것은 순수한 오프라인이며, $mol은 service worker로 처리합니다——오프라인을 참조하세요. Giper Baza는 그 다음 단계입니다. 한 클라이언트의 자산을 캐싱하는 것이 아니라 클라이언트 사이에서 데이터를 동기화합니다.실제로 이것으로 데이터를 모델링하면, 엔티티는 평범한 반응형 속성처럼 보이고 복제는 그냥 일어납니다.이 페이지는 API의 형태를 소개합니다. Giper Baza는 큰 주제입니다——이것을 지도로 여기세요, 영토 전체가 아니라.
엔티티는 순수 스키마입니다——타입이 있는 필드의 집합입니다. 동작은 바깥에 두세요; 읽기와 쓰기는 뷰에서 하세요.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)을 쓰면 그것을 설정합니다. 그 아톰을 읽는 어떤 뷰든, 자신——또는 원격 피어——이 그것을 바꾸면 다시 렌더링됩니다.
1@ $mol_action2task_add(title:string){3const task=this.tasks_list().make([[null,$giper_baza_rank_read]])!4task.Title(null)!.val(title)5task.Done(null)!.val(false)6}78@ $mol_action9task_remove(id:string){10this.tasks_list().cut(this.task(id).link())11}GitHub에서 이 페이지 편집도움이 되었나요?예아니요이전데이터 스키마다음쇼케이스이 페이지에서엔티티 정의하기읽기와 쓰기생성과 제거동기화는 자동입니다다음은 어디로?Type to search the documentation.