你好,
如果有人能帮我理解一下“烹饪后”(post cooking)的处理流程,我将不胜感激。我特别关注这一部分:
为什么在帖子已经被“烹饪”之后还要进行后处理?
也许我们可以一起梳理一下,如果要添加类似“一键嵌入”(oneboxes)或“引用特定用户”的功能(假设这些功能尚不存在),需要做哪些工作。我发现了 Prettytext:
它负责 Markdown 与 HTML 之间的双向转换,以及预览框的渲染。我还找到了后端帖子模型中的 rebake 函数:
它调用了 PostAnalyzer 的 cook 方法:
这个函数在后端执行 JavaScript 的 Markdown 转换:
我原本以为这样设计是为了减少代码重复,但随后我发现了
CookedPostProcessor
(我在开头链接的那个)。看起来有些处理仅在 JavaScript 中完成,而另一些则在 JavaScript 和 Ruby 中通过 CookedPostProcessor 共同完成。因此总结如下:
- 你需要拥有 Markdown 双向转换的规则(看起来仅在 JavaScript 中实现)。
- 你需要一些代码来生成 HTML(部分在 JavaScript 中,部分也在 Ruby 中)。
我很好奇为什么第(2)点要分在 JavaScript 和 Ruby 中实现。能否举个例子说明?如果你能纠正我在这篇帖子中可能存在的错误假设,我也将非常感激。
太感谢了!
Spirobel
fzngagan
(Faizaan Gagan)
2
首先,查看 JavaScript 控制台的 Network 选项卡,了解在创建帖子时前端捕获了什么数据并传递给了服务器。这意味着所有发送到 Rails API 的数据都会由 Rails 进一步处理。然后在 posts 表中,你会看到 raw 和 cooked 列,它们分别表示帖子的 未处理 和 已处理 形式。
好的,谢谢你的回答。我想我会一点一点地探索这个。我觉得我采取的这种“从第一性原理出发进行推理”的方法可能行不通,因为这是出于历史原因而形成的。