state/README.md

72 lines
3.1 KiB
Markdown
Raw Permalink Normal View History

2026-06-05 19:03:52 +08:00
# @apigo.cc/state - AI 逻辑操作说明书
本框架基于原生 `Proxy``MutationObserver` 实现数据与 DOM 的原子级同步。采用纯原生、零 ESM、全同步加载架构。
2026-06-05 19:03:52 +08:00
---
## 0. 快速开始 (Quick Start)
直接在 HTML 中引入(无需打包,完全非 ESM 注入):
```html
<script src="https://cdn.jsdelivr.net/npm/@apigo.cc/state@1.0.19/dist/state.min.js"></script>
```
---
## 1. 核心全局 API
引入后,以下接口直接挂载至 `globalThis`
| API | 功能说明 |
| :--- | :--- |
| **`NewState(defaults, getter, setter)`** | 创建响应式状态代理对象。 |
| **`Component.register(name, setup, tpl)`** | 注册自定义组件。支持自动模板合并。 |
| **`RefreshState(node)`** | (别名 `_unsafeRefreshState`) 手动触发特定树的扫描。仅限极致性能调优。 |
| **`SetTranslator(fn)`** | 设置国际化翻译函数。 |
| **`$` / `$$`** | 增强型原生选择器(支持限定作用域)。 |
| **`Util`** | 常用工具集(`clone`, `makeDom`, `getFunctionBody` 等)。 |
| **`Hash` / `LocalStorage`** | 自动同步至 URL 或本地存储的响应式单例。 |
| **`State`** | 框架内置的全局持久化状态单例(含 `exitBlocks` 等控制位)。 |
2026-06-05 19:03:52 +08:00
---
2026-06-05 19:03:52 +08:00
## 2. 指令映射全集 (AI-Ready)
指令语法:`$attribute="code"`。作用域默认为全局,组件内优先访问 `node.state`
### 结构化映射 (AI 强制规范)
| 指令 | 触发逻辑 | DOM 行为 | 运行约束 |
| :--- | :--- | :--- | :--- |
| **`$if`** | `Boolean(result)` | `true`: 挂载节点; `false`: 移除节点。 | **必须** 作用于 `<template>`。 |
| **`$each`** | `Iterable` | 基于 `key` 属性执行节点复用。支持 `as`, `index` 定义局部变量。 | **必须** 作用于 `<template>`。 |
**结构化指令铁律**
1. **标签约束**:严禁在非 `<template>` 标签上使用 `$if``$each`
2. **互斥约束**:严禁在同一个 `<template>` 上同时使用 `$if``$each`。若需组合,必须嵌套。
2026-06-05 19:03:52 +08:00
### 数据双向绑定 (`$bind`)
- **`input`, `textarea`, `select`**: 自动监听 `input/change` 事件。
- **`checkbox`**: 支持数组模式(多选)和布尔模式。
- **`[contenteditable]`**: 支持。
2026-06-05 19:03:52 +08:00
### 属性与 Property 绑定
- **`$text`** / **`$html`**: 映射内容。
- **`$class`**: **严格要求使用模板字符串**。范式:`class="static ${expr}"`
- **`$.path.to.prop`**: 映射 DOM 对象或组件的 Property。
- **`$src`**: 增强 SVG 内联逻辑。
- **`$$attr`**: 二级求值Dynamic Directives
2026-06-05 19:03:52 +08:00
---
## 3. 生命周期与事件
2026-06-05 19:03:52 +08:00
- **`$on[event]`**: 注入 `event`, `thisNode`, `State`, `LocalStorage`, `Hash`
- **`$onload`** / **`$onunload`** / **`$onupdate`**: 标准生命周期钩子。
2026-06-05 19:03:52 +08:00
---
## 4. 运行约束 (Constraints)
2026-06-05 19:03:52 +08:00
1. **零 ESM 依赖**:源码与分发包均不依赖 ESM确保在 `<head>` 中同步加载。
2. **数据流驱动**:严禁直接操作指令生成的 DOM必须通过 `State` 变更驱动。
3. **内敛化设计**:所有以下划线 `_` 开头的 API 均为内部逻辑,业务侧严禁直接调用。