17 Commits

Author SHA1 Message Date
roymondchen
35ed2cc0d0 perf(data-source): 迭代器容器数据上下文改为惰性深拷贝
createIteratorContentData 原先整体深拷贝数据源数据,迭代项很多时为 O(N^2)。
改为沿 fields 路径逐层构造新对象,路径之外的对象型字段在首次读取时才拷贝并缓存,
既避免修改原始数据,也保证引用变化可被渲染层感知
2026-10-30 16:49:02 +08:00
roymondchen
6f2ffc3ca1 fix(data-source): 依赖缓存按节点对象引用判断失效
此前缓存键由节点 id 拼接而成,节点被替换(如修改绑定字段)后 id 不变仍命中旧缓存,
导致新依赖未被收集。改为以首节点为 WeakMap key 并比较节点对象引用,
节点替换后重新收集依赖,节点回收后缓存自动释放
2026-10-30 16:48:30 +08:00
roymondchen
dfad691493 feat(data-source): 支持批量更新数据源
新增 dataSourceManager.batch(fn, options),fn 中的多次 setData 在结束后
统一更新一次页面:受影响节点只编译、替换一次,并按数据源分别触发 update-data。

- mergeChangeEvents 默认 false,每次变化各触发一次 update-data 并携带自己的
  changeEvent,不丢失中间变化;传 true 则每个数据源只触发一次
- 支持嵌套,仅支持同步函数;isBatching 暴露当前是否处于批量更新中
- 页面/页面片节点的替换改为批量 replaceChildNodes,避免每个节点全树搜索
- 数据源字段变更事件在 batch 内仍按每次 setData 触发
2026-10-30 16:47:56 +08:00
roymondchen
092bc2914d feat(data-source): 新增数据源 mounted 生命周期
页面渲染完成后由 runtime 触发 mounted 事件,统一管理数据源 mounted 及 timing=mounted 的方法执行;支持异步注册数据源在 init 后补充 mounted。
2026-09-03 20:27:18 +08:00
roymondchen
025cca365c perf(dep): 依赖收集改为单次遍历批量处理多 target
将 collectItems/removeTargetsDep 改为整棵树只遍历一次、在每个属性上检查所有
target,把结构遍历开销从 ×targets 降到 ×1,收集结果保持一致。

同时修正 dataSourceMethodDeps 字段命名并补充到 MApp schema。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-29 17:55:13 +08:00
roymondchen
ab6918f43d test: 完善测试用例 2026-05-14 15:26:22 +08:00
roymondchen
b1f020d532 fix(data-source,utils): 不使用replaceAll,安卓10不支持 2025-06-09 14:18:36 +08:00
roymondchen
9252822c58 refactor(data-source): 注册base/http数据源的代码有副作用 2025-04-30 17:03:36 +08:00
roymondchen
34fc0a15b9 refactor: 将data-source,dep,schema,utils收敛到core,将form,table,stage,design,util收敛到editor 2024-12-09 20:21:34 +08:00
roymondchen
de47514f69 feat: 完善迭代器嵌套使用问题,重构事件配置处理代码
* feat(editor,core,data-source,dep,schema,ui,utils,vue-runtime-help): 完善迭代器

* test: 完善测试用例

* chore: 构建

* feat: 迭代器嵌套事件传递数据

---------

Co-authored-by: roymondchen <roymondchen@tencent.com>
2024-12-09 20:21:34 +08:00
roymondchen
831204663a test: 完善测试用例 2024-05-09 20:49:54 +08:00
roymondchen
d3777b236d feat(data-source,utils,runtime): 数据源setData支持指定路径 2024-01-02 20:57:37 +08:00
roymondchen
75dd89f2fe fix(data-source,utils): 显示条件编译对于undefined理解不正确 2023-12-04 20:35:03 +08:00
roymondchen
83ab94fcad feat(data-source,editor,schema): 数据源mock新增在编辑器中使用的配置 2023-10-17 17:05:36 +08:00
roymondchen
65854d9c0a test(data-source,utils): 生成默认值函数放到utils库中 2023-10-02 17:14:14 +08:00
roymondchen
7f48b4d9f5 chore(core,data-source): 将app传入datasourceManager 2023-08-25 17:39:37 +08:00
roymondchen
aac478eebc feat: 新增数据源 2023-05-29 11:33:44 +08:00