9.8 KiB
9.8 KiB
CHANGELOG
v1.0.17 (2026-06-05)
重大变更 (Philosophical Restoration)
- 核心逻辑回位: 物理还原 v2.3 原始架构,彻底消灭所有 ESM 时期的“Magic”补丁逻辑(如
_stManaged等标志位)。 - 异步观察引擎: 恢复
DOMContentLoaded驱动的MutationObserver启动时序,确保框架作为页面的“地基”稳定运行。 - 危险 API 重命名: 将
RefreshState重命名为_unsafeRefreshState。此 API 仅供极端性能调优使用,严禁在常规业务中调用,旨在物理隔绝 AI 幻觉和不合理使用。
修复
- 升级队列恢复: 重新启用
_pendingTemplates机制,解决了在同步加载(Head 加载)模式下,组件注册先于 Body 存在时导致的渲染失效问题。 - Hash setter 同步: 修复了
Hash对象在赋值后内部状态更新延迟的问题,确保响应式即时可见。
增强 (批准合入)
- 样式智能合并: 优化
_mergeNode逻辑,支持组件内外style属性合并。 - Keyed Each: 仅在克隆环节增加
key支持,不破坏原有递归扫描哲学。
v1.0.16 (2026-06-05)
修复
- 挂载节点绑定失效: 修复了在离线/内存中提早调用
_scanTree时子节点被错打_stScanned标记,导致节点被真正挂载(isConnected)时因_stScanned为真而被 MutationObserver 跳过,从而使其上的表达式绑定未被计算的 Bug。现在只有当节点真正 connected 时才记录_stScanned = true,且在模板包装节点时主动删除原有的_stScanned标记。
v1.0.15 (2026-06-05)
修复
- Bump package version and prep tags.
v1.0.14 (2026-06-05)
修复
- 微任务扫描死循环: 引入
_stScanned标记对新挂载节点进行幂等拦截,防止在复杂嵌套(如$if/$each)及大数据量场景下,新老节点重组重排循环触发 MutationObserver 造成浏览器卡死的微任务无限扫描死循环。 - 状态更新防御: 在
_updateBinding逻辑中加入同值校验,避免当目标值与原值相等时重复赋值,杜绝不必要的 Observer 触发与重绘。
v1.0.13 (2026-05-26)
新特性
- 双重计算指令 ($$): 引入了
$$前缀指令支持(如$$if,$$each,$$text等)。该指令会先评估表达式获取字符串结果,随后将该字符串作为代码进行二次评估。这为高度动态的界面逻辑(如由后端下发的动态指令字符串)提供了原生支持。
优化
- 指令扫描系统:
- 严谨性增强: 在
_scanTree中引入了显式的triggerAttrs与eachAttrs匹配机制,彻底杜绝了以往基于字符串模糊匹配可能导致的误判风险。 - 上下文传播: 修复并增强了自动创建的
TEMPLATE包装节点的上下文(_thisObj,_ref)传播逻辑,确保动态生成的 DOM 片段能完美继承父级作用域。 - 端口修复: 修复了自动化测试脚本中的端口配置冲突,确保 CI/CD 流程的稳定性。
- 严谨性增强: 在
v1.0.12 (2026-05-25)
修复
- 上下文绑定: 修复了在对非
template节点使用$if或$each指令时,框架自动创建<template>会过早转移未初始化的父级上下文,并在脱离 DOM 树后跳过深度扫描,导致this指向丢失为自身 DOM 节点的严重 Bug。同时优化了向上寻找上下文的遍历路径,避免了双重循环的性能开销。
v1.0.11 (2026-05-21)
核心优化
- 嵌套作用域同步: 彻底重构了
$each指令在节点复用时的上下文同步机制。现在复用节点会主动感知并合并父级作用域变量(_ref)的变更,解决了在虚拟滚动场景下嵌套$each数据不更新的严重 Bug。 - 按需扫描机制: 引入了变更感知逻辑,只有当迭代项引用变化或父级上下文变量变化时才触发子树扫描(
_scanTree),大幅提升了复杂嵌套组件的滚动性能。 - 性能遥测系统: 在
dom.js中内置了__statePerformanceTelemetry埋点,支持实时监控scanCount(扫描)、reuseCount(复用)和moveCount(DOM 移动)等核心指标,为极致性能调优提供数据支撑。
v1.0.10 (2026-05-18)
修复
- 生命周期: 修复了
onunload监听器因字符串匹配错误导致的失效问题。 - 插槽合并: 修复了
_mergeNode在处理TEMPLATE节点时未正确指向.content的问题。 - 架构对齐: 恢复了
_parseNode的原始执行顺序,确保组件初始化与属性绑定时序的绝对安全性。
v1.0.9 (2026-05-18)
修复
- 事件监听: 修复了
dom.js中onunload钩子由于字符串匹配错误导致失效的问题(由onunload修正为unload)。 - 解耦逻辑: 移除了
index.js中硬编码的 Bootstrap 主题自动切换逻辑,回归通用的状态管理库定位。
优化
- 渲染性能: 进一步微调了
$each循环更新时的指令扫描路径,避免了在已有绑定节点上不必要的父级作用域向上查找。 - 稳定性确认: 确认并保留了双向绑定中的
setTimeout延迟机制,以兼容select等原生控件在复杂场景下的值同步稳定性。
v1.0.8 (2026-05-18)
重大修复与回归
- 架构还原: 忠实还原了开发者亲自编写的核心逻辑,移除了所有过度设计的复杂处理。
- 时序优化: 微调了组件属性解析时机,确保
$.prop赋值发生在组件setupFunc运行前,且正确指向父级作用域。 - 合并修复: 解决了组件模板内部自带的
$class和$style指令不执行的问题,确保多源属性和谐共存。 - 文档规范: 在 README 中增加了针对 AI 代理的“核心逻辑修改禁令”,确保未来维护的稳定性。
v1.0.7 (2026-05-18)
修复
- 深度属性合并: 解决了当组件实例上同时存在静态
class和动态$class时,动态绑定可能覆盖实例或模板原有静态类的问题。 - 基准属性系统: 引入
_baseClass与_baseStyle累加机制。所有来源的静态属性(实例处、组件模板根节点)都会被捕获为“基准值”,动态绑定将在基准值之上进行增量更新。
v1.0.6 (2026-05-18)
修复
- 初始化时序: 修正了组件实例指令在
setupFunc执行前完成初次评估的问题。现在在组件初始化(含setupFunc)完成后会立即触发指令重绘,确保$class等指令能正确响应在setupFunc中设置的属性。 - 合并鲁棒性: 优化了
class的处理流,确保实例静态类、模板静态类以及实例动态类能够按照正确的优先级合并,互不干扰。
v1.0.5 (2026-05-18)
修复
- 属性合并: 改进
src/component.js中的_mergeNode逻辑,支持组件模板与实例之间的class和style属性合并,而非简单覆盖。 - 动态绑定增强: 优化
src/dom.js中的$class和$style绑定逻辑。现在动态类支持自动切换(切换时移除旧类),动态样式支持与静态样式(Base Style)智能合并。
v1.0.4 (2026-05-18)
修复
- 表达式评估: 改进
src/core.js中的_returnCode逻辑,支持多语句表达式(如$.target="console.log(1); thisNode.parentNode")。现在会自动将最后一条语句作为返回值,避免因return关键字前置导致多语句执行异常。
v1.0.3 (2026-05-18)
修复
- 组件初始化优先级: 优化
src/dom.js中的_parseNode逻辑,确保组件容器上的指令(如$.target)在setupFunc执行前完成评估与赋值。 - 作用域解析: 将
this.到this.parent.的自动替换逻辑前移至_parseNode,解决了组件属性绑定在初始化时的作用域歧义问题。
测试
- 新增
test/priority.test.js,验证组件属性优先级及跨作用域属性解析的正确性。
v1.0.2 (2026-05-17)
优化
- 稳定性:
src/dom.js中的bind属性逻辑改为使用setTimeout确保 DOM 更新完成后同步值,提高双向绑定在高频操作下的可靠性。 - 健壮性:
src/observer.js中NewState增加对已观察对象的检查,防止重复包装导致的性能损耗。 - 功能:
src/dom.js中_translator支持{key}模板替换,增强国际化组件的灵活性。 - 清理: 全面规范代码缩进(Tab),移除
src/core.js中的调试注释。
v1.0.1 (2026-05-15)
优化
- 性能: 重构
_unbindTree清理逻辑,将时间复杂度从O(N \cdot K \cdot B)降至 $O(N \cdot B)$。1000 项更新性能提升约 60%。 - 稳定性: 引入
MAX_UPDATE_DEPTH(100) 递归保护机制,防止双向绑定循环导致爆栈。 - 内存: 优化绑定追踪机制,通过
binding._sets实现更精确的依赖清理。
测试
- 引入 Benchmark 自动化校验,确保后续修改不会引入性能回退(>20% 容差)。
- 增加
$each对极端数据(null/undefined/非 Iterable)的鲁棒性测试。
文档
- 完善
TEST.md性能基准数据。 - 校准全案版本号一致性。
v1.0.0 (2026-05-14)
修复
- 修正
src/dom.js中 SVG 加载的fetch缓存参数名错误 (cache1->cache)。 - 优化
src/index.js入口逻辑,支持在DOMContentLoaded之后加载时自动初始化。
优化
- 完善
playwright.config.js自动化测试配置,支持webServer。 test/index.html引入importmap映射,实现真正的“零构建”开发体验。
测试
- 大幅提升
test/dom.test.js测试覆盖率,涵盖$if,$each,$bind等核心指令。 - 引入性能基准测试(Benchmark),监控大规模 DOM 渲染性能。
文档
- 新增
README.md与TEST.md。 - 明确记录架构设计决策:维持“单层响应式”与“基于索引复用”列表机制,以确保极致轻量。