@ebitex/content-sdk

中文文档
1.1.292发布于 2026/11/10Apache-2.0TypeScriptES Module零依赖近 30 天下载 4085

Ebitex内容交付API的客户端:打出端点,回放渲染,站点映射,活取预览和地语地址,因此站点不维持自己的站点.

中文使用文档
文档目录5 节
  1. 为什么要用这个 而不是自己给API打电话
  2. 安装
  3. 快开始
  4. 来自资产库的媒体
  5. 了解访客的观众

@ebitex/内容-sdk

已发布 ebitex 语录 从您自己的站点获取的内容 : 内容发送 API 和 React 功能,通过发送每个功能实现发送页面 介绍到您提供的组件 .

两个切入点:

  • @ebitex/content-sdk ——客户. createDeliveryClient 是一个方法,每个终点; createContentClient 添加网站/地点/内容解析度、解析策略、缓存和 取消,和 resolveLocation(location) 以调用每个路由器更改。 没有反应.
  • @ebitex/content-sdk/react —— 说 <ContentProvider>, (中文(简体) ), <Experience>, (中文(简体) ), <RenderPresentation>, (中文(简体) ), <PresentationList>, (中文(简体) ), <RichText>, (中文(简体) ), <Resolve>和每个演示的向导 这无法证明。 反应是一种同伴依赖,从未捆绑.

为什么要用这个 而不是自己给API打电话

一个写自己的网站 fetch 与交付API对应的代码 拥有下面所有的东西,没有 显示直到有东西断裂。 这个软件包是所有软件的维护版本:

  • 每个端点, 键入,与 API 保持一致:路径分辨率、组件、流和侧面, 媒体和反应分析.
  • 弹片. buildSitemapDocuments (单位:千美元)@ebitex/content-sdk/sitemap在协议限制, 写入索引并发送 hreflang 替代, 所以你不会手动加入 URL .
  • 现场预览并点击到编辑. @ebitex/content-sdk/preview 是接收器、上盖和针头。 这个 需要预览会话的附加说明的回复,该客户端只解析其字段 使丢弃.
  • - 地方地址 - 是的 - Listene address. 地址在路径前缀下已包含其语言 本地主机策略。 一个客户端增加了自己的前缀将它翻倍.
  • 吊车和参考文献. 带有右键的缓存,以及 resolve 处理如此交付 介绍从来不是空洞的参考.

将手写客户端移动过来,可以一步一步地完成,保存自己的渲染器:见 替换手写客户端。 。 。 . 用于.NET,使用 Ebitex.Content.Delivery。 。 。 .

A 类 浏览器安全 交付密钥(一种带有允许来源或允许范围的限制) 船装一捆。 既无限制的密钥是 服务器侧密钥 永远不能到达 浏览器. 在“内容”中创建“交付”.

安装

npm install @ebitex/content-sdk

快开始

import { createContentClient } from '@ebitex/content-sdk'
import { ContentProvider, Experience, renderersFromGlob } from '@ebitex/content-sdk/react'

const content = createContentClient({ apiKey: import.meta.env.VITE_CONTENT_DELIVERY_KEY })
const renderers = renderersFromGlob(import.meta.glob('./presentations/*.tsx'))

export function App() {
  const location = useLocation()
  const navigate = useNavigate()
  return (
    <ContentProvider client={content} renderers={renderers} markdown={Markdown}>
      <Experience path={location.pathname} onRedirect={(to) => navigate(to, { replace: true })} />
    </ContentProvider>
  )
}
// presentations/hero.tsx — one file per Template, named by its externalId, default export
import type { PresentationRenderer } from '@ebitex/content-sdk/react'

const Hero: PresentationRenderer<{ headline: string }, { theme: string }> = ({ settings, component }) => (
  <section data-theme={settings.theme}>
    <h1>{component.content.headline}</h1>
  </section>
)
export default Hero

一个没有渲染器的模板, 一个未发布的引用, 一个需要服务器侧绑定的模板 决议——每个都使一个面板命名原因和固定,所以一个缺失的片段是可见的, 从不沉默.

来自资产库的媒体

从您的资产库中取取的图像、视频或文件作为扩展参考。 一个字段 可能允许几种,它们都有一个形状. isAssetValue 确认参考文献 其合同 externalId数字 : ebitex-image, (中文(简体) ), ebitex-video 或者说 ebitex-document),和内容的 拥有 kind 然后缩小 file 持有 :

import { isAssetValue } from '@ebitex/content-sdk'

function Media({ value }: { value: unknown }) {
  if (!isAssetValue(value)) return null
  const { content } = value
  switch (content.kind) {
    case 'image':
      return <img src={content.file.url} width={content.file.width} height={content.file.height} alt={content.alt ?? content.name} />
    case 'video':
      // `file.url` is an HLS manifest: hand it to a player that plays HLS.
      return content.file.posterUrl ? <img src={content.file.posterUrl} alt={content.name} /> : null
    case 'document':
      return <a href={content.file.url}>{content.name}</a>
  }
}

file 已经解决了一个地方: 引渡你要求的地方, 退回去 沿着您本地地址树到默认值。 A 类 private 资产 URL 已签名并过期, 所以让它 让它去,而不是储存它.

全面指南和参考文献: 开发者.ebitex.io。 。 。 .

工作实例: ebitex 样本 仓库有两个 完整北风咖啡站点 建在这个包上 一个静态站和一个服务器 与它期望的内容模型.

了解访客的观众

个性化和受限内容取决于访客的受众。 给客户一个 audience 选项和它 询问访问者所在的观众 在记忆中签名回答, 更新它, 并发送它与每一个读取.

import { createContentClient } from '@ebitex/content-sdk'

const content = createContentClient({
  apiKey: import.meta.env.VITE_DELIVERY_KEY,
  audience: { apiKey: import.meta.env.VITE_AUDIENCE_DELIVERY_KEY },
})

提交表单、 在另一个标签中随附的登录链接、 暂停后返回的标签以及每个标签的刻入符 自己刷新答案,和 <Experience> 变后再读. useAudienceChange() 重新放弃自己的 访问者受众变化时的组件,以及 useSignIn() 运行电子邮件链接登录。 在服务器上,制作一个 每个请求的客户端 content.forVisitor({ visitor, consent })。在上下文中从未发送观众;内容 在那里拒绝他们.

观众交付密钥是它自己的类型(内容交付密钥不起作用). 一个有允许的原产地名单 浏览器安全, 每次请求都会检查列表 . visitor 财务报告和审定财务报表 consent 是可选的:没有,或者没有 仅由上下文决定。 观众无法回答时 onError 听说了.

版本与发布记录

@ebitex/content-sdk 共发布 65 个版本,首次发布于 2026/08/29;过去 12 个月发布了 65 个版本。

版本发布日期距今
1.1.292latest2026/11/103 天前
1.1.2822026/11/049 天前
1.1.2742026/10/3014 天前
1.1.2722026/10/3014 天前
1.1.2692026/10/2915 天前
1.1.2682026/10/2915 天前

关于 @ebitex/content-sdk 的常见问题

@ebitex/content-sdk 是什么?

Ebitex内容交付API的客户端:打出端点,回放渲染,站点映射,活取预览和地语地址,因此站点不维持自己的站点.

如何安装 @ebitex/content-sdk?

在项目目录运行 npm install @ebitex/content-sdk,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 content-sdk-apply、content-sdk-codegen,可以用 npx content-sdk-apply 直接运行。

@ebitex/content-sdk 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@ebitex/content-sdk 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@ebitex/content-sdk 可以商用吗?

@ebitex/content-sdk 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@ebitex/content-sdk 的下载量有多少?

根据 npm 官方下载统计,@ebitex/content-sdk 在 2026/10/13 – 2026/11/11 这 30 天内被下载 4,085 次,日均约 136 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@ebitex/content-sdk 还在维护吗?

最新版本 1.1.292 发布于 2026/11/10(3 天前);至今共发布 65 个版本,其中过去 12 个月发布了 65 个;首次发布于 2026/08/29。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。