前言#
作为一个博客项目,内容管理是最重要的一环。在此前的实践中,我使用过多种内容管理方案,包括但不限于:数据库、Headless CMS、静态文件,甚至还设计过混合方案,但实际上有点蠢,平白增加了复杂度,效果也不尽人意。
我最终选择了 MDX 的方式来管理内容,主要原因有以下几点:
-
易于使用:MDX 允许直接在 Markdown 中嵌入 React 组件,极大地提升了内容的表现力和灵活性。其实也可以自定义 md 解析,但是会有一定程度的复杂度。
-
写作场景:我一般也就用 obsidian/vscode 之类的工具写写文章,MDX 的语法和 Markdown 非常接近,学习成本低。没有做一个在线编辑器然后上传文章的需求(实际上之前折腾过一段时间 milkdown ,调出来还不错,然后发现一次也没有用过)。
-
部署与维护:MDX 文件可以直接作为项目的一部分进行版本控制,部署也非常简单,只需要把 next.js 项目部署好就行了。后续如果需要迁移,我拿到的也是一堆 MDX 文件,迁移成本也很低。不过针对特殊组件的迁移可能还是需要一些工作量。
我认为选择任何方案都有利弊,关键是这个方案和你的需求是否匹配。MDX 方案并不适合所有场景,比如如果你需要一个复杂的内容管理系统,可能需要考虑其他方案,比如 innei 的 mx-space + shiro 的设计就很好,