@duffel/components

中文文档
3.17.0发布于 2026/06/24MITTypeScriptCommonJS近 30 天下载 24.7万

用 Duffel 构建旅行产品的组件库 .

中文使用文档
文档目录8 节
  1. 开始
  2. 整合React 组件
  3. 整合 HTML 自定义元素
  4. 没有节点的自定义元素集成
  5. 财务问题
  6. 是否有融合指南?
  7. 通过 npm 可用哪些组件 ?
  8. 通过CDN可提供哪些组件?

@ duffel/ 组件

这个软件包是一个组件库,用于帮助您使用 达菲尔 API。 。 。 .

开始

将组件整合到您的网站上有三种不同的方式。 这取决于你使用的是什么技术。 我们将使用辅助部件作为例子,但同样的步骤将适用于其他部件.

整合React 组件

  1. 安装软件包 :

    yarn add @duffel/components
    # -- or --
    npm i @duffel/components
    
  2. 从 @duffel/components

    import { DuffelAncillaries } from "@duffel/components";
    
  3. 将部件装入所需的道具

    <DuffelAncillaries
      offer={offerFromYourBackend} // The offer object from your backend
      seat_maps={seatMapsFromYourBackend}
      services={["bags", "seats"]}
      passengers={[...]}
      onPayloadReady={console.log}
    />
    

整合 HTML 自定义元素

如果您没有使用React,但仍处于节点环境中,您可以:

  1. 安装软件包 :

    yarn add @duffel/components
    # -- or --
    npm i @duffel/components
    
  2. 导入组件渲染函数和事件听众 @duffel/components/custom-elements

    import {
      renderDuffelAncillariesCustomElement,
      onDuffelAncillariesPayloadReady,
    } from "@duffel/components/custom-elements";
    
  3. 在您的 HTML 中包含自定义元素

    <duffel-ancillaries></duffel-ancillaries>
    
  4. 调用带有正确属性的渲染函数来渲染自定义元素 :

    renderDuffelAncillariesCustomElement({
      offer: offerFromYourBackend,
      seat_maps: seatMapsFromYourBackend,
      services: ["bags", "seats"],
      passengers: [...],
    });
    
  5. 为组件触发的事件设置听众 :

    onDuffelAncillariesPayloadReady((data, metadata) => {
      console.table(data);
      console.table(metadata);
    });
    

没有节点的自定义元素集成

如果您不在节点环境中,不能依赖npm安装软件包,我们通过我们的CDN提供. 这是如何整合:

  1. 包含脚本标签

    <!--
      Replace VERSION with the desired version.
      You can find them all on https://www.npmjs.com/package/@duffel/components?activeTab=versions
    
      Replace COMPONENT with the desired component you'd like to use.
      You can find the components available in the `./cdn-dist` directory after running `yarn build-and-publish --dry-run`
    
      For example, for the duffel ancillaries component on version 3.3.1, use:
      https://assets.duffel.com/components/3.3.1/duffel-ancillaries.js
    -->
    
    <script src="https://assets.duffel.com/components/VERSION/COMPONENT.js"></script>
    
  2. 在 HTML 中包含自定义元素标记 :

    <duffel-ancillaries></duffel-ancillaries>
    
  3. 将组件装入所需数据。 您可以安全地调用此功能所需的次数, 例如, 当乘客数据变化时 .

    const duffelAncillariesElement = document.querySelector("duffel-ancillaries");
    
    duffelAncillariesElement.render({
      offer: offerFromYourBackend,
      seat_maps: seatMapsFromYourBackend,
      services: ["bags", "seats"],
      passengers: [...],
    });
    
  4. 聆听组件上的“ 在 Payload Ready” 事件 . event.detail.data 包含您需要发送到 Duffel API 以创建命令的有效载荷 .

    const duffelAncillariesElement =
      document.querySelector("duffel-ancillaries");
    
    duffelAncillariesElement.addEventListener("onPayloadReady", (event) =>
      console.log("onPayloadReady\n", event.detail),
    );
    

财务问题

是否有融合指南?

很快会有更多导游来.

这个 examples 文件夹是快速启动并看到每个组件充分运行的示例的好方法.

通过 npm 可用哪些组件 ?

React 组件列表可见于 src/index.ts。如果您正在使用自定义元素,您可以在其中找到所有渲染函数和事件听众 src/custom-elements.ts。 。 。 .

通过CDN可提供哪些组件?

请检查 entryPoints 内 config/esbuild.base.config.js。它列出了我们将构建的所有组件,并上传到CDN.

版本与发布记录

@duffel/components 共发布 269 个版本,首次发布于 2021/07/22;过去 12 个月发布了 11 个版本。

版本发布日期距今
3.17.0latest2026/06/244 个月前
3.16.12026/05/086 个月前
3.16.02026/04/286 个月前
3.15.02026/04/276 个月前
3.14.02026/04/206 个月前
3.13.2-canary.0canary2026/02/238 个月前

其他发布通道:beta → 1.3.1-beta.0,igorp1-prototype → 3.1.3--prototype.12,prototype → 3.1.3--prototype.14,canary → 3.13.2-canary.0。

关于 @duffel/components 的常见问题

@duffel/components 是什么?

用 Duffel 构建旅行产品的组件库 .

如何安装 @duffel/components?

在项目目录运行 npm install @duffel/components,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^18.0.0 || ^19.0.0)、react-dom(^18.0.0 || ^19.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@duffel/components 支持 TypeScript 吗?

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

@duffel/components 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@duffel/components 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18.*。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@duffel/components 可以商用吗?

@duffel/components 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@duffel/components 的下载量有多少?

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

@duffel/components 还在维护吗?

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