1仕組みと動作原理
まずフレームワーク共通の3原則(DOM準備完了後に作成 / アンマウント時にkill・revert / セレクタをコンポーネントルートに限定)を提示し、その後に各フレームワークの構文へと落とし込みます。
- **Scope selectors** to the component root so `.box` and similar only match elements inside that component, not the rest of the page.
Vue 3向けに2つの等価な書き方(Options APIのsetup()と<script setup>)を提供し、実行可能なサンプルプロジェクトを参照して相互検証できるようにします。
See `examples/vue/` for a runnable Vite + Vue 3 project demonstrating these patterns.
Nuxt 4向けに再利用可能なcomposableパターンを提示: よく使うプラグインの一括登録 + 動的importマッピングによる重量級プラグインの遅延読み込み。
Use a **reusable composable** to register GSAP Plugins and also to lazy load Plugins that are not extensively used in your application:
SvelteではonMount + クリーンアップ関数の返却を採用: bind:thisでルート要素を取得し、return () => ctx.revert()で破棄を実行します。
const ctx = gsap.context(() => {
Reactを明確に対象外としてgsap-reactへ誘導し、同一リポジトリ内で2つのクリーンアップメカニズムが混在して混乱が生じるのを防ぎます。
For **React** specifically, use **gsap-react** (useGSAP hook, gsap.context()).
ライフサイクルのアクション対応表を提供し、「いつ作成し、いつクリーンアップするか」を参照可能なテーブルにまとめます。
| **Unmount / Destroy** | Call **ctx.revert()** so all animations and ScrollTriggers in that context are killed and inline styles reverted. |
フレームワーク内でのScrollTriggerのリフレッシュタイミングをフレームワークのDOM更新プリミティブに紐付け: VueはnextTick、Svelteはtickまたは非同期コンテンツ読み込み完了時を使用。
Call **ScrollTrigger.refresh()** after layout changes (e.g. after data loads) that affect trigger positions; in Vue/Svelte that often means after the DOM updates (e.g. nextTick in Vue, tick in Svelte, or after async content load).
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| package | gsap(核心 + 各插件子路径) |
| package | Nuxt / Vue / Svelte(示例工程的宿主框架,动态 import 的映射目标) |
4推奨統制措置と判定根拠
- SKILL.md: 純粋なプロンプト指示およびルールテキストであり、スクリプト実行や外部への影響はありません
5二重目の独立検証
- [ok] 目录资产面:仅 SKILL.md — skills/gsap-frameworks/ 下唯一文件 SKILL.md(10,621 B);无 scripts/、references/;URL 扫描 0 条。
- [ok] external_deps 逐条核实 — import("gsap/CustomEase") 等动态 import 映射在文件内逐字存在(pluginMap 共 24 项);Nuxt/Vue/Svelte 依赖来自 examples/nuxt/package.json("nuxt": "^4.4.2")等示例工程,非 skill 自带。
- [ok] Nuxt composable 代码是否与 examples 一致 — examples/nuxt/app/composables/useGSAP.ts 与 SKILL.md 中的 useGSAP.ts 代码块结构一致(PLUGINS 常量、pluginMap、lazyLoadPlugin 泛型、registerPlugin(ScrollTrigger)),可运行验证。
- [ok] Vue/Svelte 写法是否与官方生命周期语义相符 — Vue 用 onMounted/onUnmounted、Svelte 用 onMount 返回值做清理,均为官方推荐的对应钩子;ctx?.revert() 的可选链也避免容器为空时报错。
- [ok] 安全反例搜索 — token 扫描:curl/wget/fetch(/XMLHttpRequest/exec(/child_process/process.env/.env/API_KEY/secret 零命中;无 URL、无脚本文件。
- [ok] 与 gsap-react 的分工是否重复 — 本文件首段即声明 React 走 gsap-react,并在 Learn More 再次指向;gsap-react 亦声明 Vue/Svelte 走本 skill,互不重叠。
- [ok] 元数据与 pin — frontmatter license: MIT;HEAD = aed9cfd3277740755f6bfc1155c7aa645403b760;GitHub API stars 15326 / pushed_at 2026-07-29T17:36:08Z。
- [ok] 「lazyLoadPlugin 减少初始包体」是否属实 — pluginMap 用 () => import() 动态导入,仅在调用时拉取并 registerPlugin,确为按需加载模式;原文亦给出用途限定「not widely used in your app」。
6結論
8c31c95c46ec9b9f…