用途:在 Vue(或 Nuxt)、Svelte(或 SvelteKit)等带挂载/卸载生命周期的组件框架中编写与审查 GSAP 代码。React 请改用 gsap-react(useGSAP、gsap.context);补间与时间线用 gsap-core、gsap-timeline,滚动动画用 gsap-scrolltrigger。
主要能力与原则:在组件 DOM 可用后(onMounted、onMount)再创建补间和 ScrollTrigger;在卸载清理中 kill 或 revert,避免动画作用在已分离节点上并防止泄漏;用组件根元素限定选择器作用域,使 .box 等只匹配组件内部元素。
使用方式:在 Vue 3 组合式 API 与 script setup 中,用 ref 获取容器,onMounted 内调用 gsap.context(回调, container.value),回调里写 gsap.to(".box", { x: 100 }) 等,onUnmounted 调用 ctx?.revert();插件在应用级注册一次(如 main.js 中 gsap.registerPlugin(ScrollTrigger))。Svelte 中用 bind:this={container},onMount 内同样用 gsap.context 包裹并传入容器,返回 () => ctx.revert() 作为清理函数;Svelte 5 生命周期不同但原则一致:挂载时创建、销毁时 revert。
ScrollTrigger 清理:通过 scrollTrigger 配置或 ScrollTrigger.create() 创建的实例会被 gsap.context() 纳入,调用 ctx.revert() 时一并还原;应在同一个 gsap.context() 回调内创建。布局变化影响触发位置后(如数据加载)调用 ScrollTrigger.refresh(),在 Vue/Svelte 中常于 DOM 更新后(nextTick、tick)或异步内容加载后执行。
适用场景:任何需要在 Vue、Svelte 等框架组件内安全使用 GSAP 补间、时间线与滚动触发动画的项目。
限制与避免事项:不要在组件 setup 或 DOM 根元素存在前的顶层同步脚本中创建动画;不要使用无作用域的全局选择器,应把容器作为 gsap.context() 第二参数;不要跳过清理,务必在 onUnmounted 或 onMount 返回函数中调用 ctx.revert();插件不要在每次渲染的组件体内重复注册,应在应用级注册一次。资料未提供安装命令、价格与平台信息。