FlowGate LogoFlowGate
图片模板开发

SDK 用法

使用 @fgate/template-sdk 读取数据、配置并通知截图

渲染时,宿主会在页面加载前注入全局对象 window.__FGATE_TEMPLATE__@fgate/template-sdk 是对它的类型安全封装。

API

函数说明
getData<T>()读取数据源解析结果,key 为 dataSources[].id
getConfig<T>()读取管理员配置,key 为 configSchema[].key
getMeta()读取元信息 { instanceName, serverName, templateId, version }
ready()通知宿主「页面已渲染完成,可以截图」

渲染前必须调用一次 ready(),否则宿主会等待至超时(约 5 秒)后才按当前状态截图。数据/字体/图片加载完、DOM 绘制完成后再调用。

最小示例

假设 manifest.json 声明了一个 online_players 数据源(id 为 players)和一个 string 配置(key 为 title):

import { getConfig, getData, ready } from "@fgate/template-sdk"

interface Data {
  players: Array<{ name: string; uuid: string; ping?: number }>
}
interface Config {
  title: string
}

const { players } = getData<Data>()
const { title } = getConfig<Config>()

document.querySelector("#title")!.textContent = title
document.querySelector("#list")!.innerHTML = players
  .map((p) => `<li>${p.name} — ${p.ping ?? "?"}ms</li>`)
  .join("")

// 渲染完成,通知宿主截图
ready()

处理可降级的数据源

如果某个数据源在 manifest 里是 required: false,它在不支持的服务器上会是 null[],模板需自行兜底:

const { coins } = getData<{ coins: Array<{ name: string; values: Record<string, string> }> | [] }>()

if (coins.length === 0) {
  showPlaceholder("当前服务器未安装 PlaceholderAPI")
} else {
  renderLeaderboard(coins)
}

ready()

安装

v1 阶段 SDK 以 monorepo 源码形式提供。你可以直接把上述函数(仅几行,读取 window.__FGATE_TEMPLATE__)内联到项目里,也可以从 FlowGate 仓库的 packages/template-sdk 复制使用;后续会发布到 npm。

On this page