GANKUDADIZ
BACK_TO_BLOG
TECH_LOG :: 2026.03.30

Markdown 还是富文本,我选择只留一个

Avatar
By Gankudadiz · 1 min read · 39 views

最近看博客后台,纠结了一下内容字段的设计。写篇小文记录一下思考过程。

背景

博客后台一开始设计的是双轨制:一个 format 字段区分 markdownrichtext,对应两个编辑器、两个存储字段 body_mdbody_html。当时想的是"兼收并蓄",让我根据自己的习惯选择。

遇到的问题

首先是维护成本。两种格式意味着两套解析逻辑、两套渲染逻辑、两套校验规则。每次改需求都要同时改两边的代码,测试也要跑两遍。

其次是选择困难。每次写文章都要纠结一下:今天用哪个?Markdown 写技术文章比较顺手,但偶尔想插入一个复杂表格,富文本更方便。然后就陷入了"这个选择有意义吗"的自我怀疑。

最后是数据一致性。两种格式怎么同步?用户切换格式怎么办?历史数据要不要迁移?这些问题加起来比业务逻辑还复杂。

Markdown 其实够用了

仔细想想,博客这种内容形式,其实不需要那么多花里胡哨的格式。

标题、列表、代码块、图片、链接、引用,这些覆盖了 90% 的写作场景。剩下的 10% 是什么?可能是稍微复杂一点的表格,或者是多栏布局。但说实话,博客文章搞那么多花样,反而影响阅读体验。

作为程序员,Markdown 是天然的选择。写代码注释、写文档、写 Git 提交信息都是这一套语法,保持一致性挺好。

至于"所见即所得"的体验,EasyMDE 这类编辑器已经做得很好了。左边写、右边预览,实时看到效果,跟富文本编辑器的体验差距不大。

# 示例
这是一个代码块
const hello = 'world';

而且纯文本格式有个隐藏的好处:版本控制友好。哪天想迁移到别的平台,直接把 Markdown 文本搬过去就行,不用担心格式丢失或者解析出错。

决定

最后还是把富文本这条路砍掉了。只留 Markdown,一个字段 body_md,一个解析器。

前台渲染的时候用 Parsedown 或者类似库把 Markdown 转成 HTML,缓存起来。数据库里只存一份原始文本,干净利落。

以后如果有人吐槽"我不会用 Markdown",再说。现在的目标用户主要是自己,先把代码写利索了。

评论 (2)

秋风于渭水
秋风于渭水 6 天前
markdown够用了,实在不行还可以直接写html配合CSS解决问题嘛
gankudadiz
gankudadiz 站长 / 管理员回复 3 天前
是的,一开始我简单的需求复杂化了,属于既要又要,后来感觉维护不方便,即使止损吧,事实确实是markdown足够用了。
ACTION:

留下你的评论