diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c1da7d..8fd4972 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,18 +1,5 @@ # CHANGELOG -## v1.0.19 (2026-06-09) - -### 重大变更 (Pure Synchronous Architecture) -- **架构重组**: 将分散的 8 个文件整合为 3 个高内聚模块 (`utils.js`, `reactive.js`, `engine.js`),大幅减少文件碎片。 -- **全局命名空间平铺**: 彻底移除 `ApigoState` 包装对象,核心 API (`NewState`, `Component`, `$`, `$$` 等) 直接平铺挂载至 `globalThis`,回归最朴素的原生开发范式。 -- **源码脱离 ESM**: 源码层级全面剥离 `import` 和 `export` 语句,配合 IIFE 闭包技术实现内部逻辑封装,确保在 `` 中同步加载的绝对可靠性。 -- **`_refExt` 官方支持**: 将此前作为 Hack 存在的 `_refExt` 机制正式合入引擎核心,支持从外部通过 DOM 节点属性注入额外的响应式上下文。 - -### 优化与修复 -- **测试保真度**: 100% 重构单元测试加载机制,模拟用户真实同步引入环境,确保“所测即所用”。 -- **调试增强**: 引入 `globalThis.__DEBUG` 开关,支持在不污染生产环境的前提下开启详尽的指令解析日志。 -- **模板安全性**: 将自动生成的组件模板改为注入至 `document.head`,防止应用级 `innerHTML` 重置导致模板丢失。 - ## v1.0.17 (2026-06-05) ### 重大变更 (Philosophical Restoration) diff --git a/README.md b/README.md index 5b75426..ef3afa7 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,18 @@ # @apigo.cc/state - AI 逻辑操作说明书 -本框架基于原生 `Proxy` 和 `MutationObserver` 实现数据与 DOM 的原子级同步。采用纯原生、零 ESM、全同步加载架构。 +本框架基于原生 `Proxy` 和 `MutationObserver` 实现数据与 DOM 的原子级同步。本手册仅供 AI 构建、维护及驱动基于此引擎的应用。 --- -## 0. 快速开始 (Quick Start) -直接在 HTML 中引入(无需打包,完全非 ESM 注入): -```html - -``` +## 1. 核心状态逻辑映射 ---- - -## 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` 等控制位)。 | +### `NewState(defaults, getter, setter)` +* **功能**:创建响应式代理。 +* **内部机制**:拦截所有属性读写。若属性值变更,触发所有引用该属性的 DOM 节点的更新任务(异步微任务)。 +* **扩展逻辑**:通过 `getter/setter` 拦截器可实现数据持久化(如同步至 URL Hash 或 LocalStorage)。 +* **原子操作**: + * `obj.__watch(key, cb)`: 建立 key -> callback 的直接依赖。 + * `obj.__unwatch(key, cb)`: 解除依赖。 --- @@ -33,39 +20,61 @@ 指令语法:`$attribute="code"`。作用域默认为全局,组件内优先访问 `node.state`。 -### 结构化映射 (AI 强制规范) -| 指令 | 触发逻辑 | DOM 行为 | 运行约束 | -| :--- | :--- | :--- | :--- | -| **`$if`** | `Boolean(result)` | `true`: 挂载节点; `false`: 移除节点。 | **必须** 作用于 `