评论格式支持

大约 2 分钟...

你可以在评论中添加多样化的内容,包括经过扩展的 Markdown 语法和 HTML 标签。

格式支持

我们支持完整的 CommonMark (标准 Markdown 语法),同时支持以下扩展:

  • GFM 风格的表格
  • GFM 风格的删除线
  • 上下角标
  • Emoji 表情
  • 代码块高亮
  • TEX 公式

GFM

Github Flavored Markdown, 即 Github 风格语法

同时,你可以在不触发 保护机制 的情况下自由嵌入任何的 HTML 内容。

有限的预览支持

为了控制客户端体积大小,我们仅在官方客户端 @waline/client 放置了小体积的 Markdown 解析器,这导致很多语法并不能在预览面板内正确显示 (它们可以正确的渲染在评论区)。

这包含如下限制:

  • 标准的 emoji 语法 (如 🎉:tada:) 无法正确渲染

  • 上下角标 (如: H~2~Ox^2^) 无法正确渲染

  • Tex 语法,也就是数学公式 (如: $a = 1$) 默认无法渲染。

    在官方客户端下,你可以通过设置 texRenderer 选项来设置预览时的 Tex 渲染,,参见 Cookbook → 使用自定义 TEX 渲染器

  • 在默认的高亮器下,代码块将通过特定分隔符使用随机颜色进行高亮。

    在官方客户端下,你可以通过设置 highlighter 选项来设置预览时的代码高亮,参见 Cookbook → 自定义代码高亮

更多

运行原理

  1. 考虑到体积问题,客户端使用 marked 进行渲染并默认使用 < 1kb 的高亮器进行高亮,同时不包含 Tex 渲染器,导致以上限制。

  2. 用户提交评论时,客户端嵌入自定义 Emoji 表情图片、并将评论原文会发送到服务端。

  3. 服务端接收到原文,使用 markdown-it 以相关插件对 markdown 进行正确的渲染,同时使用 prism.js 为代码块根据语言进行高亮,并按照用户设置进行 Tex 渲染,最后执行 XSS 处理。

  4. 处理完成后,服务端会将正确的渲染内容进行储存,并在需要时返回给客户端,保证评论区正常显示。

友情提示:评论区仅作评论展示,如有问题咨询请去 Github Discussion 中提问。
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.14.7