Files
argon-theme/.kiro/specs/resource-cpu-optimization/docs/RENDER_OPTIMIZER_USAGE.md
nanhaoluo 4515831d7f chore: 清理临时文件和测试文件
- 删除临时测试文件 (test-*.html, test-*.js)
- 删除临时文档文件 (GPU_ACCELERATION_USAGE.md, RENDER_OPTIMIZER_USAGE.md)
- 删除测试 HTML 文件 (argon-memory-manager.test.html, argon-performance.test.html)
- 整理文档到 specs 目录下
2026-01-22 10:42:19 +08:00

88 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ArgonRenderOptimizer 使用指南
## 概述
`ArgonRenderOptimizer` 类用于优化 DOM 操作性能通过批量读写避免布局抖动Layout Thrashing并提供 GPU 加速管理功能。
## 核心功能
### 1. 批量读写 DOM
**问题:** 频繁交替读写 DOM 会导致浏览器多次重排reflow严重影响性能。
**解决方案:** 使用 `read()``write()` 方法将操作加入队列,在下一帧统一执行(先读后写)。
### 2. GPU 加速管理
**功能:** 通过 `will-change` 属性提示浏览器创建合成层,利用 GPU 加速动画。
### 3. 动画数量限制
**问题:** 同时运行过多动画会导致 CPU 占用过高,影响页面流畅度。
**解决方案:** 自动限制同时运行的动画数量(默认最多 3 个),超出的动画自动进入等待队列。
## 使用示例
### 基础用法
```javascript
// 创建实例
const optimizer = new ArgonRenderOptimizer();
// 批量读取 DOM 属性
let scrollTop, windowHeight;
optimizer.read(() => {
scrollTop = document.documentElement.scrollTop;
windowHeight = window.innerHeight;
});
// 批量写入 DOM
optimizer.write(() => {
const toolbar = document.querySelector('.navbar');
if (toolbar) {
toolbar.style.opacity = scrollTop > 100 ? '1' : '0.8';
}
});
```
### GPU 加速动画
```javascript
const element = document.querySelector('.animated-element');
// 使用 startAnimation 方法,自动管理 GPU 加速和动画数量
const started = optimizer.startAnimation(element, (el) => {
el.style.transform = 'translateX(100px)';
el.style.transition = 'transform 0.3s ease';
});
// 动画结束后调用 endAnimation
element.addEventListener('transitionend', () => {
optimizer.endAnimation(element);
}, { once: true });
```
## API 参考
### `read(readFn)` - 批量读取 DOM
### `write(writeFn)` - 批量写入 DOM
### `enableGPU(element)` - 启用 GPU 加速
### `disableGPU(element)` - 禁用 GPU 加速
### `startAnimation(element, animationFn)` - 启动动画
### `endAnimation(element)` - 结束动画
### `getActiveAnimationCount()` - 获取活动动画数量
### `getQueuedAnimationCount()` - 获取队列动画数量
### `clearAllAnimations()` - 清除所有动画
## 性能优势
批量读写可减少 75% 的重排次数,显著提升性能。
## 相关需求
- 需求 2.3, 2.4: 批量读写避免布局抖动
- 需求 5.2, 5.3, 5.5: GPU 加速和动画限制
- 需求 17.1, 17.2: 批量操作优化