@bpmn-io/form-js-viewer

中文文档
2.2.0发布于 2026/11/06SEE LICENSE IN LICENSETypeScriptESM + CJS近 30 天下载 10.6万

查看窗体 - 由 bpmn.io 供电

中文使用文档
文档目录23 节
  1. 安装
  2. 使用量
  3. 自定义文档预览请求
  4. 样式
  5. API 密码
  6. Form
  7. Form#importSchema(schema: Schema, data?: Data) => Promise<R…
  8. Form#submit() => { data: Data, errors: Errors }
  9. Form#validate() => Errors
  10. Form#reset() => void
  11. Form#setProperty(key, value) => void
  12. Form#attachTo(parentNode: HTMLElement) => void
  13. Form#detach() => void
  14. Form#on(event, fn) => void
  15. Form#destroy() => void
  16. 活动
  17. changed :: { data, errors }
  18. submit :: { data, errors }
  19. import.done :: { error, warnings }
  20. 活动布局
  21. 生命周期事件
  22. 福特菲尔德事件
  23. 许可证

@bpmn-io/form-js-查看器

此库导出一个表单查看器, 用于查看和提交表单 。 使用 我们的编辑 来创建和编辑表格.

安装

npm install @bpmn-io/form-js-viewer

使用量

import { Form } from '@bpmn-io/form-js-viewer';

const schema = {
  type: 'default',
  components: [
    {
      key: 'creditor',
      label: 'Creditor',
      type: 'textfield',
      validate: {
        required: true,
      },
    },
  ],
};

const data = {
  creditor: 'John Doe Company',
};

const form = new Form({
  container: document.querySelector('#form'),
});

await form.importSchema(schema, data);

// add event listeners
form.on('submit', (event) => {
  console.log('Form <submit>', event);
});

// provide a priority to event listeners
form.on('changed', 500, (event) => {
  console.log('Form <changed>', event);
});

自定义文档预览请求

如果你使用 documentPreview 字段并需要自定义文件下载/审查的认证, 您可以提供 documentEndpointBuilder 通过依赖性注射提供服务.

import { Form } from '@bpmn-io/form-js-viewer';

const DocumentPreviewRequestModule = {
  documentEndpointBuilder: [
    'value',
    {
      buildUrl: (document) => document.endpoint,
      buildRequestInit: (document) => ({
        headers: {
          'x-document-id': document.documentId,
        },
        credentials: 'include',
      }),
    },
  ],
};

const form = new Form({
  container: document.querySelector('#form'),
  additionalModules: [DocumentPreviewRequestModule],
});

buildRequestInit 是可选的,用于 配置获取请求。如果省略,文档请求使用默认 fetch(url) 行为.

检查出来 一个完整的例子。 。 。 .

样式

适当的造型包括: form-js.css 所用样式表和字体 :

<link
  href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,400;0,600;1,400&display=swap"
  rel="stylesheet" />

<link href="https://unpkg.com/@bpmn-io/form-js/dist/assets/form-js.css" rel="stylesheet" />

API 密码

Form

创建带有选项的新窗体 { container?: HTMLElement }。 。 。 .

import { Form } from '@bpmn-io/form-js-viewer';

const form = new Form({
  container: document.querySelector('#form'),
});

Form#importSchema(schema: Schema, data?: Data) => Promise<Result, Error>

显示通过窗体图和可选数据表示的窗体.

try {
  await form.importSchema(schema);
} catch (err) {
  console.log('importing form failed', err);
}

Form#submit() => { data: Data, errors: Errors }

按程序提交表格 .

const { data, errors } = form.submit();

if (Object.keys(errors).length) {
  console.error('Form submitted with errors', errors);
}

Form#validate() => Errors

程序验证一个形式 .

const errors = form.validate();

if (Object.keys(errors).length) {
  console.error('Form has errors', errors);
}

Form#reset() => void

程序重设表格 .

Form#setProperty(key, value) => void

设置窗体属性, 例如 readOnly。 。 。 .

Form#attachTo(parentNode: HTMLElement) => void

将表单附加到父节点上.

Form#detach() => void

将窗体从父节点中分离出 .

Form#on(event, fn) => void

订阅 事件。 。 。 .

Form#destroy() => void

从文档中删除窗体.

活动

changed :: { data, errors }

每次有变形状态时就被炒了.

submit :: { data, errors }

在提交表格时被开除.

import.done :: { error, warnings }

当一个计划完成导入时, 无论它成功还是失败, 都被解雇 .

活动布局

  • form.layoutCleared
  • form.layoutCalculated :: { rows }

生命周期事件

  • detach
  • attach
  • form.init
  • form.clear
  • form.destroy
  • diagram.clear
  • diagram.destroy

福特菲尔德事件

  • formField.add :: { formField }
  • formField.remove :: { formField }
  • formField.focus :: { formField }
  • formField.blur :: { formField }
  • formField.search :: { formField, value }

许可证

B. 《公约》条款之下的使用 bpmn.io 许可证。 。 。 .

版本与发布记录

@bpmn-io/form-js-viewer 共发布 129 个版本,首次发布于 2021/02/24;过去 12 个月发布了 20 个版本。

版本发布日期距今
2.2.0latest2026/11/062 天前
2.1.12026/10/011 个月前
2.1.02026/09/281 个月前
2.0.22026/09/281 个月前
2.0.02026/09/181 个月前
2.0.0-alpha.0alpha2026/09/171 个月前

其他发布通道:backports → 1.15.4,alpha → 2.0.0-alpha.0。

关于 @bpmn-io/form-js-viewer 的常见问题

@bpmn-io/form-js-viewer 是什么?

查看窗体 - 由 bpmn.io 供电

如何安装 @bpmn-io/form-js-viewer?

在项目目录运行 npm install @bpmn-io/form-js-viewer,或使用 pnpm add / yarn add / bun add。

@bpmn-io/form-js-viewer 支持 TypeScript 吗?

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

@bpmn-io/form-js-viewer 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@bpmn-io/form-js-viewer 可以商用吗?

@bpmn-io/form-js-viewer 使用 SEE LICENSE IN LICENSE 许可。许可条款写在包内的独立文件中,请阅读该文件确认可否商用。以上为概括,不构成法律意见,请以许可原文为准。

@bpmn-io/form-js-viewer 的下载量有多少?

根据 npm 官方下载统计,@bpmn-io/form-js-viewer 在 2026/10/09 – 2026/11/07 这 30 天内被下载 106,272 次,日均约 3,542 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bpmn-io/form-js-viewer 还在维护吗?

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