为什么选择 Headless CMS?
我目前在设计和开发一些小型网站和个人网站,考虑到对无代码经验的用户使用上的便捷,所以在研究和挑选合适的 Headless CM (无头CMS) 来使用在项目中,希望找到一个适合自己的最佳实践。传统CMS(比如 Wordpress 我觉得太臃肿不够灵活自由)。
由于网站体量小,并且没有太多商业化需求,因此我希望选择的标准是免费(免费额度足够使用)、配置简单、操作友好,有一定的社区支持。
什么是Headless CMS?
CMS 全称是 Content Management System,即内容管理系统。Headless CMS 也称为 无头CMS,与传统CMS对比,它将前端和后端分离,只提供内容管理系统和内容API的CMS,注重内容的创建和管理,而不处理呈现内容的前端界面,将内容与前端逻辑完全解耦,在前端页面设计和开发时更加灵活自由。
传统的 CMS 代表有 Wordpress、Drupal、DEDE(织梦CMS)、Joomla等,特点是一般将所有内容捆绑到一个系统中。
而 Headless CMS 按照项目规模和具体需求可以有更多的选择。常见的有:Sanity、Contentful、Strapi、Dato CMS、Prismic、Tina CMS等等。
结论:体验 TinaCMS
在经过一般寻找和筛选后,我最终选定了几个进行具体对比和具体分析:Sanity( Star 5.6K)、Dato CMS(定位不同)、Tina CMS( Star 12.5K - 开源关注高)、Keystatic(Star 1.5K - 新项目)。具体的对比在后文。
先说结论,在简单的体验过后,我是选择了 TinaCMS 来进行开发。
-
TinaCMS 提供可视化的编辑工具,可直接在网站前端编辑内容,这点对于用户来说很友好,而且轻量,配置文档也不算太复杂。缺点就是官网真不好看,而且文档阅读起来也不是特别友好。
-
Sanity 实际上在功能性和体验上面是最舒服的。Sanity Studio 提供了强大的自定义编辑界面,且支持实时内容更新。但配置难度较高,整体框架相对较重,不太适合当前项目的需求。后期如果有开发体量较大的网站需求,会优先尝试用 Sanity 来开发。
-
Keystatic 对于 Next.js 项目应该更为友好,集成性强且轻量。但由于我目前使用的是 Astro 框架,适配性稍差;此外,其 Star 数量相对较低(约 2,100),社区资源和支持有限,暂时不做考虑。
-
Dato CMS:作为托管型 Headless CMS,管理界面直观,适合非技术用户,且支持多语言内容管理。但免费计划限制较多,功能扩展需付费。类型上不是我目前的最佳选择。**
Sanity、Dato CMS、Tina CMS、Keystatic 对比
简单 CMS 对比
- Sanity:适合需要现代化内容管理体验和动态更新的用户。
- Dato CMS:适合内容简单的小型网站,尤其是非技术用户友好。
- Tina CMS:适合静态网站开发者,可视化实时剪辑和版本控制。
- Keystatic:适合 Next.js 用户,追求简单和免费的解决方案。
全面对比
1. Sanity
-
免费使用:有免费计划,适合小型项目。免费计划包括 1 个用户、3 个数据集和一定量的 API 请求,足够用于个人网站。
-
类型:托管型 Headless CMS。
-
技术要求:中等(托管型),通过 API 集成到前端框架,但配置 Sanity Studio 和 GROQ 查询语言需要一定的开发经验。
-
功能特点:
- 提供强大的内容编辑工具(Sanity Studio),支持自定义编辑界面。
- 支持实时内容更新,适合动态网站。
- 支持多语言内容管理。
-
对中文支持:
- 管理界面默认英文,无官方中文本地化,但可通过自定义配置实现部分中文支持。
- 内容管理上对中文支持良好。
- 文档主要是英文,中文社区和资源较少。
-
适用场景:需要现代化内容管理体验,适合与 React、Next.js 等框架集成的个人或小型团队项目。
2. Dato CMS
-
免费使用:有免费计划,但功能有限。免费计划适合小型项目,包含 1 个用户和少量内容记录。
-
类型:托管型 Headless CMS。
-
技术要求:低(托管型),通过 API 集成,界面友好,适合非技术用户管理内容。
-
功能特点:
- 提供直观的管理界面,易于使用。
- 支持多语言内容,适合国际化项目。
- 提供丰富的 API 和 webhook 功能。
-
对中文支持:
- 界面默认英文,无官方中文本地化,可能需要手动配置。
- 内容管理上对中文支持良好。
- 文档主要是英文,中文社区和资源较少。
-
适用场景:希望使用托管型 CMS,预算有限,适合小型个人网站或内容简单的项目。
3. Tina CMS
-
免费使用:是的,完全开源,提供免费使用(基于 Git 的内容管理)。
-
类型:开源 Headless CMS,可使用 Tina Cloud。
-
技术要求:中等(需开发经验),专注于与现代 JavaScript 框架(如 Next.js、Gatsby、Astro)集成,需配置。。
-
功能特点:
- 轻量级,提供可视化编辑工具,可直接在网站前端编辑内容。
- 内容存储在 Git 仓库中,适合版本控制。
- 强调开发者友好,配置灵活。
-
对中文支持:
- 界面和文档主要是英文,中文文档有中文版本,暂时不全面。
- 内容管理上支持中文输入和渲染。
- 社区支持有限,中文资源较少。
-
适用场景:熟悉静态网站开发的用户,追求轻量级和免费的 CMS 解决方案。
4. Keystatic
-
免费使用:是的,完全免费的开源项目。
-
类型:开源 Headless CMS,通常自托管。
-
技术要求:中等(需开发经验),专为 Next.js 项目设计,需集成到项目中。
-
功能特点:
- 轻量级,基于文件的内容管理(内容存储在本地文件或 Git)。
- 提供简单的编辑界面,集成到 Next.js 应用中。
- 适合小型项目,功能较为基础。
-
对中文支持:
- 界面和文档主要是英文,无官方中文支持。
- 内容管理上支持中文输入和显示。
- 社区和中文资源非常有限(项目较新)。
-
适用场景:使用 Next.js 构建网站的用户,追求轻量级和免费的 CMS 解决方案。
官方文档
- GitHub 仓库 sanity-io/sanity
- Dato CMSdatocms 官方网站
- GitHub 仓库 tinacms/tinacms
- GitHub 仓库 Thinkmill/keystatic