skyline-worklet
Skyline Worklet 动画系统技能。使用 worklet 函数、共享变量(SharedValue)、动画类型(timing/spring/decay)、Easing 缓动函数、组合动画和线程通信(runOnUI/runOnJS)开发高性能交互动画时使用此技能。适用于拖拽、手势跟随、弹簧回弹等需要 UI 线程直接响应的动画场景。触发关键词:worklet、worklet 动画、SharedValue、共享变量、timing、spring、decay、Easing、runOnUI、runOnJS、applyAnimatedStyle、交互动画、手势动画、UI 线程动画。
By wechat-miniprogram · 898 installs
npx skills add wechat-miniprogram/skyline-skills --skill skyline-worklet
Source repository · Upstream listing
Worklet 动画系统
适用场景
实现手势跟随、拖拽等交互动画
使用 timing/spring/decay 创建动画效果
通过 SharedValue 驱动节点样式变化
组合多段动画(序列、重复、延迟)
在 UI 线程和 JS 线程间传递数据
核心概念
双线程架构与 Worklet 的意义
小程序双线程架构中,UI 事件需跨线程传递到 JS 线程再回传, 交互动画会有明显延迟 。Worklet 动画让动画逻辑直接运行在 UI 线程,实现类原生动画体验。
三大核心概念
概念 说明 关键 API
worklet 函数 可运行在 JS 或 UI 线程的函数,顶部声明 'worklet' 指令 runOnUI() , runOnJS()
共享变量 跨线程同步的变量,通过 .value 读写 shared() , derived()
动画驱动 将 SharedValue 绑定到节点样式 applyAnimatedStyle()
基本流程
文档索引
根据需求快速定位(路径相对于 references/ ):
我想要... 查阅文档
了解 worklet 架构和完整概念 core/worklet overview.md
使用 SharedValue 和 DerivedValue base/shared derived.md
在 worklet 中操作 scroll view base/scroll view context.md
使用 timing/spring/decay 动画 animation/timing spring decay.md
查看 Easing 缓动函数 animation/easing.md
使用序列/重复/延迟组合动画 animation/combine animation.md
了解 runOnUI/runOnJS 线程通信 tool/thread communication.md
强制规则
MUST: worklet 函数必须声明 'worklet' 指令
MUST: SharedValue 必须通过 .value 读写
MUST: 访问非 worklet 函数必须使用 runOnJS
MUST: 页面方法必须通过 this.methodName.bind(this) 访问
MUST: Worklet 动画仅在 Skyline 渲染模式下可用
确保 app.json 配置 "renderer": "skyline"
确保开发者工具勾选「将 JS 编译成 ES5」
NEVER: 在 worklet 函数中直接调用 wx API
必须通过 runOnJS 回到 JS 线程。
NEVER: 通过解构 this.data 访问属性
会导致 Object.freeze 冻结 this.data , setData 将失效。
Quick Reference
API 速查表
分类 API 说明
基础 shared(initialValue) 创建 SharedValue
基础 derived(updaterWorklet) 创建衍生值(类比 computed)
基础 cancelAnimation(sharedValue) 取消动画
动画 timing(toValue, options?, callback?) 时间曲线动画(默认 300ms)
动画 spring(toValue, options?, callback?) 弹簧物理动画
动画 decay(options?, callback?) 滚动衰减动画
组合 sequence(anim1, anim2, ...) 依次执行
组合 repeat(anim, reps, reverse?, callback?) 重复(负值=无限)
组合 delay(ms, anim) 延迟执行
工具 runOnUI(workletFn) 在 UI 线程执行
工具 runOnJS(normalFn) 回调 JS 线程
场景 → 方案映射
场景 推荐方案
点击后平滑移动 timing + Easing
手势松开回弹 spring
手势松开惯性滑动 decay + velocity
先移动再弹回 sequence(timing, spring)
循环脉动效果 repeat(timing, 1, true)
延迟后开始动画 delay(ms, timing/spring)
相关技能
场景 推荐技能 说明
手势组件 skyline components pan/tap/long press 手势处理
渲染引擎概览 skyline overview Skyline 配置和迁移
样式开发 skyline wxss WXSS 支持与差异
路由转场 skyline route 自定义路由动画
References 目录结构