# @burojs/core 中文文档

规范地址：https://npmcn.com/package/%40burojs/core/

版本：0\.11\.0
npm 元数据更新时间：2026-11-02T07:13:44.824Z
中文译文更新时间：2026-11-08T21:08:05.558Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40burojs/core
原文对照：https://npmcn.com/package/%40burojs/core/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：15.3 MB，39 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2026-08-15T18:59:36.146Z
- 最新版本发布：2026-11-02T07:13:44.668Z
- 近 30 天下载量：2058（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：9（近 12 个月 9 个）

## 中文简介

Buro: 类型、构建器、登记器、动作调度器

## 安装

```sh
npm install @burojs/core
```

也可以使用：`pnpm add @burojs/core`、`yarn add @burojs/core`、`bun add @burojs/core`

## README

# @ burojs/ 分数

宣告的心脏 [阿宝](https://github.com/buro/buro):资源/应用定义、实地构建器、登记册和动作调度器.

**零运行时间依赖关系, 它无处输入** ——这个包是纯数据和纯函数,所以可以从服务器,测试,或任何UI层中被消耗.

## 安装

```bash
pnpm add @burojs/core @burojs/field-types
```

## 使用量

完整的 CRUD 资源——列表,显示,编辑,创建,侧边栏放置,标签,搜索和列选择——是一个单一声明:

```ts
import { defineApp, defineResource } from '@burojs/core';
import { f } from '@burojs/field-types';

const company = defineResource(
  'company',
  {
    texts: { label: 'Company', labelPlural: 'Companies' },
    displayField: 'name',
    fields: {
      id: f.number({ system: true, texts: 'ID' }),
      name: f.string({ texts: 'Name' }),
      created_at: f.dateTime({ system: true, texts: 'Created' }),
    },
    views: { list: { columns: ['id', 'name', 'created_at'], search: { fields: ['name'] } } },
  },
);

const app = defineApp({ name: 'admin' });
app.use(company);
```

`texts.label` 名称一个记录和 `texts.labelPlural` 收藏——侧边栏 列表页面,一个相关的列表。 两者均为纯默认; 翻译在 i18n 捆绑在下面 `resources.<name>.label` 财务报告和审定财务报表 `resources.<name>.labelPlural`。 。 。 . 活动区域中缺失的标签来自后退区域 从代码中的默认值, 然后从人力资源名称; 一个资源 声明不 `labelPlural` 标题 : `label`。显示数字的文字是应用软件的自有文字,按惯例排列,在 计数家族 `resources.<name>.count_one | _few | _many | _other`,读取 `t(key, { count })`。所有其他元素的捆绑键——字段,选项,enum, 检查,导航——在一个表格中 [`docs/i18n-guide.md`](https://npmcn.com/package/docs/i18n-guide.md)。 。 。 .

通过声明将资源指向非默认数据提供者——没有线程:

```ts
defineResource('schedules', { meta: { dataProviderName: 'temporal' } /* … */ });
```

## 可移植声明内核

对于框架中性配置,注册一个小型的开口类型,并将可移植声明汇编成不可变的快照. 相对声明引用安装在层名空间; 使用 `namespace:id` 当引用是故意交叉命名空间时.

```ts
import {
  TRUSTED_CODE,
  compileApplicationDefinition,
  createKindRegistry,
  defineTrustedBundle,
} from '@burojs/core';

interface ResourceInput {
  readonly label: string;
}

function parseResource(value: unknown): ResourceInput {
  if (
    value === null
    || typeof value !== 'object'
    || Array.isArray(value)
    || Object.keys(value).length !== 1
    || !Object.prototype.hasOwnProperty.call(value, 'label')
    || !('label' in value)
    || typeof value.label !== 'string'
  ) {
    throw new TypeError('A resource must contain exactly one string label.');
  }
  return { label: value.label };
}

const resourceKind = {
  kind: 'resource',
  schemaVersion: 1,
  schema: { parse: parseResource },
  compile: (value: ResourceInput) => ({ label: value.label }),
};

const catalog = defineTrustedBundle({
  defaultNamespace: 'catalog',
  declarations: [{ kind: 'resource', ref: 'products', schemaVersion: 1, value: { label: 'Products' } }],
  implementations: [],
  handle: { source: 'catalog' },
});

const result = compileApplicationDefinition({
  compilerVersion: 'my-app-v1',
  kinds: createKindRegistry([resourceKind]),
  layers: [{
    input: {
      id: 'catalog',
      priority: 0,
      defaultNamespace: catalog.defaultNamespace,
      declarations: catalog.declarations,
    },
    trust: TRUSTED_CODE,
  }],
});

if (result.ok) {
  result.snapshot.getProjection({ kind: 'resource', ref: 'catalog:products' });
}
```

每层以信任值到达编译器. `TRUSTED_CODE` 标记您自己构建的代码层; 从 JSON 或 YAML 中解析的层带 `LayerGrants` 政策说明 `@burojs/config`),编译器对照它们检查了地层使用的种类,命名空间和转换操作,其变换的路径,它们的目标声明,它引用的资源,查询和变异,以及它绑定的后端. 信任的随附能力和被禁钥匙(`action`, (中文(简体) ), `component`, (中文(简体) ), `validator`(......)不是赠款: `@burojs/config`解析器检查它们。 没有信任值的层是 `invalid-input`。 。 。 .

`defineTrustedBundle()` 将信任的执行定义与应用程序运行时间的声明一起保存,但 `snapshot.manifest` :它不包含任何功能、部件、服务、证书或执行对象。 因此,在应用自己的XSS安全运输后,它可以安全地进行JSON序列化.

运行时间申报出口为 `normalizeEntityRef`, (中文(简体) ), `formatEntityRef`, (中文(简体) ), `sameEntityRef`, (中文(简体) ), `EntityRefError`, (中文(简体) ), `defineTrustedBundle`, (中文(简体) ), `isTrustedDeclarationBundle`, (中文(简体) ), `TRUSTED_CODE`, (中文(简体) ), `normalizeLayerGrants`, (中文(简体) ), `createKindRegistry`, (中文(简体) ), `compileApplicationDefinition`, (中文(简体) ), `DEFAULT_COMPILER_LIMITS`, (中文(简体) ), `createApplicationSnapshot`,以及 `explainSnapshot`。 。 。 .

## 主要出口

-   **`defineApp` 编号 : `defineResource` 编号 : `extendResource`** ——申请申报表. 资源 `fields` 是一个普通对象,由 `f` 从 `@burojs/field-types` (或一个 `extendFieldBuilder` 结果);其记录屏幕(`views.show` 编号 : `edit` 编号 : `create`,与 `header`, (中文(简体) ), `body`, (中文(简体) ), `with` 财务报告和审定财务报表 `types`由P1a规划和检查,由P1b提供.
-   **`defineGroup` 编号 : `defineSection` 编号 : `defineCustomPage`** 导航结构和非资源页;见 [导航指南](https://npmcn.com/package/docs/navigation-guide.md) 用于组合、布局和 URL.
-   **`defineEnum`** 注册登记簿。 记录变体是 `types` 在资源上,多步创建是一个 `steps` 节点在 `views.create.body`。 。 。 .
-   **`createFieldBuilder` 编号 : `createFieldRegistry`** ——田地-建设者原始作上作曲.
-   **`createDispatcher`** - 将诉讼援引变成 `ActionResult` (通知 / retetch / 重定向 / clearSelection...) 应用UI 层.
-   **`evaluateVisible`** ——球场,列和导航能见度背后的共享上游评价.
-   **数据访问端口** —— 说 `ActionDataAccess` 财务报告和审定财务报表 `CountCapable` (单位:千美元)`getCount?`,即点播行数),在此声明正是因为这个包没有依赖性.

## 许可证

麻省理工学院

## 常见问题

### @burojs/core 是什么？

Buro: 类型、构建器、登记器、动作调度器

### 如何安装 @burojs/core？

在项目目录运行 npm install @burojs/core，或使用 pnpm add / yarn add / bun add。

### @burojs/core 支持 TypeScript 吗？

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

### @burojs/core 支持 ESM 还是 CommonJS？

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

### @burojs/core 可以商用吗？

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

### @burojs/core 的下载量有多少？

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

### @burojs/core 还在维护吗？

最新版本 0\.11\.0 发布于 2026/11/02（6 天前）；至今共发布 9 个版本，其中过去 12 个月发布了 9 个；首次发布于 2026/08/16。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

