核心概念

Store 模式与入口

理解本地 store、共享权威端、client mirror 与 Coaction 的隔离包边界。

同一套 public store contract 会出现在三种运行模式中。

模式store.share写入权威方法结果
Localfalse当前 runtime同步
Shared main'main'main runtime在权威端同步
Shared client'client'main runtime向 client 返回 Promise

Local 模式

import { create } from 'coaction';

const store = create(source);

Local 模式在一个 runtime 内拥有状态与执行权。除非显式启用,否则它不生成 patch,因此是建议的起点。

Shared main 模式

当 store 拥有 main transport,或运行在被识别的 Worker 权威环境时,它会成为共享权威端:

import { create } from 'coaction/shared';

const store = create(source, { transport });

Main store 执行 action、提交状态、发送有序 patch,并提供 full snapshot。

Shared client 模式

传入 Worker、SharedWorker 或 client transport 会创建镜像:

const store = create(source, { worker });

await store.getState().increment();

Client method 是异步的,因为执行发生在权威端。client 可以读取并订阅本地镜像状态,但直接调用 setState() 与 apply() 会被拒绝。

隔离入口

包提供静态边界,便于 bundler 排除无关运行时代码:

入口包含内容
coaction本地创建、生命周期 helper、signal primitive
coaction/shared共享创建、JSON protocol、权威端与 client 镜像
coaction/adapter外部 store binding 与 state/patch 安全 helper

框架包暴露自己的 create() wrapper,并可能同时支持 local 与 worker option。Vanilla 代码直接选择 coaction 或 coaction/shared 可获得最清楚的 bundle 边界。

三件都被叫作"同步"的事

它们可以组合,但互不蕴含:

是什么
响应式追踪哪些组件在字段变化时重渲染 —— observer、selector、computed getter。
共享权威一个 store 拥有状态,其它 JavaScript 上下文持有它的镜像,并通过 transport 调用它的 action。即本页。
远端同步持久 outbox、对服务端的 rebase、离线恢复 —— @coaction/sync。

本地 store 可以在完全不创建 Worker 的情况下与服务端同步。而共享 store 的镜像是同一个权威端的 视图,不是会各自演化再合并的副本 —— 后者才是这套词汇在多数其它库里的含义。

继续阅读共享运行时概览,了解权威语义与部署规则。

本页目录