再看一张专门给 LiveView 的图:
浏览器 DOM
│
│ phx-click / phx-submit / phx-change
▼
LiveView 进程
│
├── handle_event/3 ← 用户事件
├── handle_info/2 ← PubSub / 进程消息
├── handle_params/3 ← URL 参数变化
└── assign / update / stream
│
▼
重新渲染 HEEx
│
▼
只把 diff 推回浏览器这就是 LiveView 的本质:
- 事件发上来
- 服务器改状态
- 模板重算
- 浏览器只吃差异
所以 LiveView 项目的一个核心能力,不是“会不会写 DOM 操作”,而是:
会不会把 UI 状态翻译成清晰的事件和 assigns。