Node.js/NPM

使用 NPM 包集成 Docs Embed,以获得完整的应用级控制

如果你需要更多控制并希望在应用层工作,可以从 npm 安装 GitBook embed 包。这种方法非常适合服务器端渲染、构建时集成或自定义 iframe 管理。

步骤

1

将包安装

添加 @gitbook/embed 到你的项目中:

npm install @gitbook/embed

如需完整的 API 参考和源代码,请参阅 GitHub 上的 @gitbook/embedarrow-up-right.

2

导入包

在你的应用代码中,导入 createGitBook 函数:

import { createGitBook } from "@gitbook/embed";

或者使用 CommonJS:

const { createGitBook } = require("@gitbook/embed");
3

初始化 GitBook

使用你的文档站点 URL 创建一个 GitBook 实例:

const gitbook = createGitBook({
  siteURL: "https://docs.company.com",
});
4

创建一个 iframe

生成一个 iframe 元素,并将其源设置为嵌入 URL:

const iframe = document.createElement("iframe");
iframe.src = gitbook.getFrameURL({
  visitor: {
    token: 'your-jwt-token', // 可选:用于自适应内容或已认证访问
    unsignedClaims: { // 可选:用于动态表达式的自定义声明
      userId: '123',
      plan: 'premium'
    }
  }
});
iframe.id = "gitbook-embed-container";
iframe.style.border = "none";
iframe.style.width = "100%";
iframe.style.height = "600px";
5

附加 frame

创建一个 GitBook frame 实例并将其挂载到你的页面:

const frame = gitbook.createFrame(iframe);
document.getElementById("gitbook-embed-container").appendChild(iframe);
6

以编程方式控制嵌入内容

使用 frame 实例与嵌入内容交互:

// 在文档标签页中导航到特定页面
frame.navigateToPage("/getting-started");

// 切换到助手标签页
frame.navigateToAssistant();

// 向聊天发送消息
frame.postUserMessage("How do I get started?");

// 清除聊天历史
frame.clearChat();
7

配置嵌入

使用自定义选项配置嵌入:

frame.configure({
  trademark: false,
  tabs: ['assistant', 'docs'],
  actions: [
    {
      icon: 'circle-question',
      label: '联系支持',
      onClick: () => window.open('https://support.example.com', '_blank')
    }
  ],
  greeting: { title: '欢迎!', subtitle: '我能为你做什么?' },
  suggestions: ['What is GitBook?', 'How do I get started?'],
  tools: [/* ... */]
});
8

监听事件

注册事件监听器以响应嵌入事件:

frame.on('close', () => {
  console.log('Frame 已关闭');
});

// 完成后取消订阅
const unsubscribe = frame.on('navigate', (data) => {
  console.log('Navigated to:', data.path);
});

API 参考

客户端工厂

  • createGitBook(options: { siteURL: string })GitBookClient

  • client.getFrameURL(options?: { visitor?: {...} })字符串 - 获取带可选已认证访问的 iframe URL

  • client.createFrame(iframe: HTMLIFrameElement)GitBookFrameClient - 创建一个 frame 客户端以与 iframe 通信

Frame 客户端方法

  • frame.navigateToPage(path: string)void - 导航到文档标签页中的特定页面

  • frame.navigateToAssistant()void - 切换到助手标签页

  • frame.postUserMessage(message: string)void - 向聊天发送消息

  • frame.clearChat()void - 清除聊天历史

  • frame.configure(settings: Partial<GitBookEmbeddableConfiguration>)void - 配置嵌入

  • frame.on(event: string, listener: Function)() => void - 注册事件监听器(返回取消订阅函数)

配置选项

配置选项可通过 frame.configure({...}):

tabs

覆盖显示哪些标签页。默认为你站点的配置。

  • 输入: ('assistant' | 'docs')[]

actions

显示在侧边栏中、与标签页并列的自定义操作按钮。每个操作按钮在点击时都会触发回调。

注意:这之前名为 buttons。使用 actions

  • 输入: Array<{ icon: string, label: string, onClick: () => void }>

greeting

显示在 Assistant 标签页中的欢迎消息。

  • 输入: { title: string, subtitle: string }

suggestions

显示在 Assistant 欢迎界面中的建议问题。

  • 输入: string[]

trademark

在嵌入 UI 中显示或隐藏 GitBook 商标——包括 Docs Embed 页脚和 Assistant 品牌标识。

  • 输入: boolean

  • 默认: true

tools

用于扩展 Assistant 的自定义 AI 工具。详情请参见 创建自定义工具

  • 输入: Array<{ name: string, description: string, inputSchema: object, execute: Function, confirmation?: {...} }>

visitor (已认证访问)

传递给 getFrameURL({ visitor: {...} })。用于 自适应内容 并在 已认证访问.

  • 输入: { token?: string, unsignedClaims?: Record<string, unknown> }

常见问题

  • 忘记安装包 – 在导入之前运行 npm install @gitbook/embed

  • 缺少 siteURLsiteURL 选项是必需的,并且必须与你已发布的文档站点匹配。

  • iFrame 未渲染 – 确保父容器具有足够的宽度/高度,以便 iframe 显示。

  • 在初始化之前调用 Frame 方法 – 等待 createFrame() 完成后再调用 frame 方法。

  • 未取消事件订阅 – 记得调用由 frame.on() 返回的取消订阅函数,以防止内存泄漏。

  • 使用旧版 API 方法 – 像 open(), close(), toggle(),以及 destroy() 之类的方法在 NPM 包中不可用。请改用 frame 客户端方法。

最后更新于

这有帮助吗?