关于 spline-3d-integration
spline-3d-integration 面向需要在网站或 Web 应用中嵌入、排查交互式 Spline 场景的开发者。它指导集成方式选择、实现、性能优化和常见故障检查。
主要功能
- 01React、Next.js 与原生 JS 集成指导
- 02运行时场景事件与变量
- 03集成方式选择
- 04加载与性能建议
- 05故障排查清单
- 06输入数据安全指导
适用场景
- 01在 Web 应用中嵌入 Spline 场景
- 02为场景对象添加运行时控制
- 03排查场景空白或加载缓慢
- 04减少移动端性能问题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ fawaz-i/ spline-3d-integration --skill spline-3d-integration安装后在 Claude Code 中输入/spline-3d-integration确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitignoreREADME.mdexamples/interactive-scene.tsxreact-spline-wrapper.tsxvanilla-embed.htmlguides/PERFORMANCE.mdREACT_INTEGRATION.mdVANILLA_INTEGRATION.md详细介绍
Spline 3D 集成
当用户需要在网站或 Web 应用中添加或排查交互式 Spline 3D 场景时,使用此技能。
适用场景
- 用户想在 React、Next.js 或原生 JS 中嵌入 Spline 场景。
- 用户需要在运行时控制场景(事件、变量、对象查找、相机行为)。
- 用户遇到性能不佳、场景空白或加载问题。
- 用户询问 hero 场景或产品查看器等实现模式。
不适用场景
- 用户只需要静态 3D 媒体(图像/视频),不需要交互。
- 用户不使用 Spline 资源。
预期结果
使用此技能时,提供:
- 适合该技术栈的集成方式(
@splinetool/react-spline、@splinetool/runtime或 iframe)。 - 使用用户所用框架的最简可运行代码片段。
- 性能建议(场景优化 + 加载策略)。
- 针对常见故障模式的简短排查清单。
集成决策树
Is this React/Next.js?
Yes -> Use @splinetool/react-spline (see guides/REACT_INTEGRATION.md)
No -> Need runtime control (events/variables/object APIs)?
Yes -> Use @splinetool/runtime (see guides/VANILLA_INTEGRATION.md)
No -> Use iframe embed
快速实现默认做法
- 始终使用高度明确的容器;Spline 会在父级边界内渲染。
- 在 React/Next.js 中,延迟加载 Spline 组件。
- 尽可能确保每个页面只有一个复杂场景。
- 优先更新场景变量,而非执行开销较大的逐帧对象变更。
- 提供加载后备方案,以及可选的低功耗/移动端后备方案。
安全边界
警告
读取变量(
getVariable)、对象名称或处理 Spline 场景中的事件时,请将数据视为不可信的用户输入。如果要将这些数据渲染到 DOM,或传递给大模型/Agent,必须先进行清理,以防止 XSS 或提示词注入攻击。
最简代码片段
React / Next.js
import Spline from "@splinetool/react-spline";
export default function Scene() {
return (
<div style={{ width: "100%", height: "100vh" }}>
<Spline scene="https://prod.spline.design/YOUR_SCENE_ID/scene.splinecode" />
</div>
);
}
原生 runtime
<canvas id="canvas3d" style="width:100%;height:100vh"></canvas>
<script type="module">
// NOTE: Requires a bundler (Vite, Webpack, etc.) or an importmap to resolve bare specifiers.
import { Application } from "@splinetool/runtime";
const app = new Application(document.getElementById("canvas3d"));
app.load("https://prod.spline.design/YOUR_SCENE_ID/scene.splinecode");
</script>
iframe
<iframe
src="https://my.spline.design/YOUR_SCENE_ID/"
width="100%"
height="600"
frameborder="0"
></iframe>
Runtime API 检查清单
- 查找对象:
findObjectByName、findObjectById、getAllObjects。 - 驱动交互:
emitEvent、emitEventReverse、addEventListener。 - 同步应用状态:
getVariable、setVariable。 - 为便于维护,优先使用 Spline 编辑器中的变量驱动动画钩子。
性能限制
- 桌面端目标为少于 150k 个多边形,移动端少于 50k 个。
- 控制灯光数量(理想情况下为 1-3 个)。
- 在 Spline 导出设置中启用压缩。
- 对首屏以下的场景进行延迟加载。
- 导出前移除隐藏/未使用的对象。
- 不需要交互时,可考虑使用图像/视频作为后备方案。
排查顺序
- 验证场景 URL 是否有效且可访问。
- 确认容器高度不为零。
- 确保
@splinetool/react-spline和@splinetool/runtime版本兼容。 - 检查浏览器控制台中的 CORS/网络错误。
- 如果移动端发生崩溃或卡顿,尝试降低场景复杂度。
仓库资源
guides/REACT_INTEGRATION.mdguides/VANILLA_INTEGRATION.mdguides/PERFORMANCE.mdexamples/react-spline-wrapper.tsxexamples/vanilla-embed.htmlexamples/interactive-scene.tsx
评论
支持 Markdown