不稳定的 API — 该 API 正在积极开发中,未来版本的 Bun 可能会发生变化。
Bun.markdown.html()— 将 Markdown 渲染为 HTML 字符串Bun.markdown.render()— 使用自定义回调渲染 Markdown 的每个元素Bun.markdown.react()— 将 Markdown 渲染为 React JSX 元素
Bun.markdown.html()
将 Markdown 字符串转换为 HTML。
选项
作为第二个参数传入选项对象以配置解析器:自动链接
传入true 可启用所有自动链接类型,或者传入对象以精细控制:
标题 ID
传入true 可同时启用标题 ID 和自动链接标题,或者传入对象进行细粒度控制:
Bun.markdown.render()
解析 Markdown 并使用自定义 JavaScript 回调渲染。这样可以完全控制输出格式——你可以生成带自定义类的 HTML、React 元素、ANSI 终端输出或任何其他字符串格式。
回调函数签名
每个回调接收:children— 元素累积的内容字符串meta(可选)— 带有元素特定元数据的对象
null 或 undefined 则完全忽略该元素。如果未注册元素回调,则其子元素会原样通过。
块级回调
列表项元数据
listItem 回调会接收渲染标记所需的所有信息:
index— 在父列表中的基于 0 的位置depth— 父列表的嵌套层级(0 = 顶层)ordered— 父列表是否为有序列表start— 父列表的起始编号(仅当ordered为 true 时)checked— 任务列表状态(仅用于- [x]/- [ ]项)
行内回调
示例
带类的自定义 HTML
去除所有格式
忽略元素
返回null 或 undefined 可从输出中删除某元素:
ANSI 终端输出
嵌套列表编号
listItem回调函数接收渲染标记所需的所有内容——无需后期处理:
代码块语法高亮
解析器选项
将解析器选项作为单独的第三个参数传入:Bun.markdown.react()
将 Markdown 直接渲染为 React 元素。返回一个 <Fragment>,可以作为组件返回值使用。
服务端渲染
支持renderToString() 和 React 服务端组件:
组件替代
通过第二个参数传入以标签名为键的自定义 React 组件,替换任意 HTML 元素:可覆盖元素列表
解析器产生的每个 HTML 标签都可以被替换:React 18 及更早版本
默认情况下,元素使用Symbol.for('react.transitional.element') 作为 $$typeof 符号。对于 React 18 及更早版本,在选项(第三参数)中传入 reactVersion: 18: