etaf-playground/README.zh-CN.md

2.7 KiB
Raw Blame History

ETAF Playground

ETAF Playground 是通用的应用构建工作区:左侧编辑同一个应用的源码,右侧挂载 实时 ETAF 预览。框架从文件发现 example不内置具体业务 catalog也不依赖某个 具体应用。

每个 example 遵循同名文件合同:

  • examples/NAME.etaf:一个 inert 的静态结构 form
  • examples/NAME.elComponent、状态、effect 和 root factory默认命名为 etaf-NAME-root
  • examples/NAME.ecss:可选的 inert (styles ...) presentation 规则。

执行 M-x etaf-playground-open 打开默认 example。左侧 source 顶部的 ETAFELECSS 是可点击按钮;C-c 1/2/3(也支持 C-c C-1/C-2/C-3)分别切换 .etaf.el.ecss。在 .etaf.el.ecss 窗口按 C-c C-c 会把当前 source 渲染到右侧预览;默认保存 source 也会刷新。若 root 或 feature 不遵循命名约定,可在 companion 中调用 etaf-playground-register-example 注册覆盖。

ETAF core 提供通用 App 预编译命令 M-x etaf-compile-app 和状态命令 M-x etaf-app-compile-status;完整合同见 ETAF 文档。 Playground 不实现编译,只把发现的 example 注册成 ETAF App并在 header line 显示 Compile App 快捷按钮和当前状态。默认产物目录是 .etaf-build/

etaf-playground-mount-example 仍作为低层 batch/consumer API 保留。业务 Component、数据库 schema、palette、refs 和 handlers 都应该留在 example companion 中Playground 只提供 source/preview 会话、读文件、窗口切换与生命周期。

Research Shelf 本身还没有复杂到需要 feature 目录,所以完整的可执行 companion 集中在一个 .el 文件里,用注释区分 DATA / THEME / STATE / VIEW / ROOT只有 Playground 需要发现的入口文件保持同名:

examples/research-shelf.etaf  # inert 结构 source
examples/research-shelf.ecss  # inert 样式 source
examples/research-shelf.el    # DATA / THEME / STATE / VIEW / ROOT 分区

该 companion 注册了 :reload-on-refresh t;保存 .el.etaf.ecss 后刷新 source会在下一次 mount 前重新加载完整 consumer。

验证命令:make check EMACS=/Applications/Emacs.app/Contents/MacOS/Emacs。 性能门禁:make perf1413×62 viewport 的 warm 选行/主题延迟)。

仓库中的 Research Shelf 只是上述通用工作区的一个 consumer。它默认安装确定性的 256 条 SQLite fixture每页显示 12 条;测试或压测时可以绑定 etaf-research-shelf-fixture-sizeetaf-research-shelf-page-size 调整规模, 界面中激活 Rows N ✎ 可以输入 1100。