请帮助理解:烹饪后的处理过程

你好,
如果有人能帮我理解一下“烹饪后”(post cooking)的处理流程,我将不胜感激。我特别关注这一部分:

为什么在帖子已经被“烹饪”之后还要进行后处理?

也许我们可以一起梳理一下,如果要添加类似“一键嵌入”(oneboxes)或“引用特定用户”的功能(假设这些功能尚不存在),需要做哪些工作。我发现了 Prettytext:

它负责 Markdown 与 HTML 之间的双向转换,以及预览框的渲染。我还找到了后端帖子模型中的 rebake 函数:

它调用了 PostAnalyzer 的 cook 方法:

这个函数在后端执行 JavaScript 的 Markdown 转换:

我原本以为这样设计是为了减少代码重复,但随后我发现了

CookedPostProcessor

(我在开头链接的那个)。看起来有些处理仅在 JavaScript 中完成,而另一些则在 JavaScript 和 Ruby 中通过 CookedPostProcessor 共同完成。因此总结如下:

  1. 你需要拥有 Markdown 双向转换的规则(看起来仅在 JavaScript 中实现)。
  2. 你需要一些代码来生成 HTML(部分在 JavaScript 中,部分也在 Ruby 中)。

我很好奇为什么第(2)点要分在 JavaScript 和 Ruby 中实现。能否举个例子说明?如果你能纠正我在这篇帖子中可能存在的错误假设,我也将非常感激。
太感谢了!:smiley:
Spirobel

首先,查看 JavaScript 控制台的 Network 选项卡,了解在创建帖子时前端捕获了什么数据并传递给了服务器。这意味着所有发送到 Rails API 的数据都会由 Rails 进一步处理。然后在 posts 表中,你会看到 rawcooked 列,它们分别表示帖子的 未处理已处理 形式。

好的,谢谢你的回答。我想我会一点一点地探索这个。我觉得我采取的这种“从第一性原理出发进行推理”的方法可能行不通,因为这是出于历史原因而形成的。