@eraserlabs/render

中文文档
0.5.2发布于 2026/11/12MITTypeScriptES Module构建来源已验证近 30 天下载 1.1万

内浏览器填充,测量,布局,以及应用Eraser图协议的执行.

中文使用文档
文档目录4 节
  1. 导言
  2. 为什么
  3. 使用量
  4. 编辑器 API

@ eraserlabs/ 放弃

导言

@eraserlabs/render 是一个内浏览器 一半的渲染管道。 鉴于已解析的元素和一个已准备好的模板库,它会填充标记、挂载和隔离每个模板的CSS,测量浏览器实际制作的框,通过路径连接 @eraserlabs/layout,并将结果应用为定位节点加全场SVG覆盖.

它作为自成一体的IIFE在Chromium运行(@eraserlabs/render/browser/iife显示为 window.__eraser),这就是如何 @eraserlabs/diagrams 驱动它。 根导出为节点安全场景类型 buildHtmlDocument 并依赖于任何特定浏览器。 可移植元素、图标、模板、角色和字体合同均在 @eraserlabs/protocol。 。 。 .

为什么

授权的宽度和高度是意图,而不是颜料. 文本包装,粘贴,图标和阴影会改变出行和导出必须遵守的框. 这些测量只有在一个真正的布局引擎运行后才存在,所以这个软件包就活在页面中,而不是在节点中近似CSS.

使用量

然后将IIFE插入一页:

window.__eraser.setup({ templates, baseCss });
await window.__eraser.registerFonts({ css, faces });

const { measures, layout } = await window.__eraser.run({
  entities,
  connections,
  icons,
});

const { scene, css } = window.__eraser.serialize();

setup 财务报告和审定财务报表 registerFonts 是页面寿命. run 按请求:填充、挂载、测量、路线、应用. serialize 为 HTML 输出路径返回已定位的场景标记和此捆绑的样式表.

授权连接 points 是路线 - 本地 { x, y } 来源为连接对象 x 编号 : y。适配器将其转换为Tuple几何 @eraserlabs/layout ;输出多管线仍为场景-空间拖曳.

API 和计量合同在 SPEC.md。 。 。 .

编辑器 API

@eraserlabs/render/elements 使解析子集不挂起、 路由或全局设置 :

import { createElementRenderer } from '@eraserlabs/render/elements';
import { buildRenderPageSetup } from '@eraserlabs/diagram-templates';

const renderer = createElementRenderer(buildRenderPageSetup(resolver.library));
const result = await resolver.resolve(
  { elements: selection },
  { partial: true },
);
if (!result.ok) throw new Error(JSON.stringify(result.errors));
const fragment = await renderer.render({
  entities: result.entities!,
  connections: result.connections!,
  icons: result.icons!,
});

安装 renderer.css 挂载 fragment.defs 与 HTML 并行。 环绕每个元素 [data-mdp-tag="<tag>"];主机拥有定位和清理. 已解决的主题自动被应用到模板根上. 使用 applyLayout 以应用现有的几何学而无需走道.

同样的入门出口 measureElements(mounted, entities?) 财务报告和审定财务报表 measureText(root)与图书馆CSS和已注册字体连接、未转换的DOM供应; display:none 无法测量。 这些呼叫等待字体. 与实体,测量应用了完整的渲染器的缩放政策,并恢复了探针样式;没有它们,它读取了当前布局. 文字测量中包含射程碎片及其结合,而不是一行相加的框或一对矩.

@eraserlabs/render/fit 导出同步 measureElement(wrapper) 财务报告和审定财务报表 fitElement(wrapper, constraints)适当的政策是: natural, (中文(简体) ), fixed, (中文(简体) ), content,以及 balanced装配会按探测器的大小进行 宿主决定是否坚持这种几何.

prepareWashMasters(master, elements, { idPrefix }?) 在低等填充和变异前准备水彩定义 props.washSym。 。 。 . renderer.render(request, { idPrefix }?) 处理克隆和准备本身。 保留已挂载的返回定义;可选前缀必须在挂载的碎片中是独一无二的,只使用字母,数字,下划线和连字符. 自动前缀隔开捆绑.

版本与发布记录

@eraserlabs/render 共发布 11 个版本,首次发布于 2026/08/19;过去 12 个月发布了 11 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.5.2latest2026/11/122 天前
0.5.12026/11/058 天前
0.5.02026/11/0311 天前
0.4.32026/10/2816 天前
0.4.22026/10/2817 天前
0.4.12026/10/2817 天前

关于 @eraserlabs/render 的常见问题

@eraserlabs/render 是什么?

内浏览器填充,测量,布局,以及应用Eraser图协议的执行.

如何安装 @eraserlabs/render?

在项目目录运行 npm install @eraserlabs/render,或使用 pnpm add / yarn add / bun add。

@eraserlabs/render 支持 TypeScript 吗?

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

@eraserlabs/render 支持 ESM 还是 CommonJS?

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

@eraserlabs/render 需要什么版本的 Node.js?

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

@eraserlabs/render 可以商用吗?

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

@eraserlabs/render 的下载量有多少?

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

@eraserlabs/render 还在维护吗?

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