CodeWalk

Worklet 是什么?与 Web Worker 和 Service Worker 有什么区别?

作者:我还是少年 · 2026-05-30 12:55

请说明 Worklet 的概念、类型(PaintWorklet / AudioWorklet / LayoutWorklet)以及与 Web Worker 的区别。

回答

我还是少年

Worklet:浏览器渲染管道的轻量级钩子,可以执行特定渲染阶段的自定义逻辑。

类型

  1. PaintWorklet(CSS Painting API):自定义 CSS 绘制
// 注册 Paint Worklet
registerPaint('myBackground', class {
  paint(ctx, size) {
    ctx.fillStyle = 'red';
    ctx.fillRect(0, 0, size.width, size.height);
  }
});

CSS 中使用:background: paint(myBackground);

  1. AudioWorklet:音频处理线程,实现自定义音频节点
  2. LayoutWorklet(CSS Layout API):自定义布局算法(实验阶段)
  3. AnimationWorklet:高性能动画控制

与 Web Worker 和 Service Worker 对比

特性Web WorkerService WorkerWorklet
用途通用后台计算网络代理/离线/推送渲染管道扩展
生命周期页面关联,任务完成后可终止独立于页面,由事件驱动轻量级,按需调用
DOM 访问
线程模型独立线程独立线程渲染线程的子线程
API 支持丰富(XHR/IndexedDB等)有限渲染相关 API 专属
典型场景复杂计算/数据处理缓存/离线/推送自定义 CSS/音频处理

注意:Worklet 极其轻量,创建销毁开销极低,适合高频调用的渲染场景。