前言
在 Astro 中串接 CMS 是一件非常容易的事情,可以到官方文件查看各种 CMS 的传接方式。
什么是 CMS? Headless CMS?
内容管理系统 (Content Management System)是一种用于编写和管理网站内容的工具,可以让帮助撰写内容与管理网站资产,不同的 CMS 厂商有各式各样的特色像是:排程发布、编辑器、合作编辑、资产管理……等特色。
传统 CMS 会从内容管理到资料呈现一套包办,像是 Wordpress ,但 Astro 只在乎如何呈现内容,因此可以自由地抓取不同来源的资料,于是可以搭配「无头 CMS」,无头 CMS(Headless CMS) 实际上就是「只在乎资料的 CMS」,专注在编辑内容的功能并透过 API 来检索网页内容,让开发者有极高的自由度选择技术与呈现方式。
这样的模式大幅的分割了前端与内容管理,自由度是其最大的卖点,通常建设好一个无头 CMS 之后可以一边专注的产出内容与资料规范,一边前端则专注于索取资料与呈现内容。
无头 CMS 的差异? Git Based? API Driven?
无头 CMS 实作还可以再分为 Git Based 与 API Driven 两种类型,差别在于它们如何「管理储存内容」。 Git Based 将内容储存在类似 Git 这样的版控系统当中,结构简单直白,而 API Driven 则是架设专门的伺服器透过 API 动态的检索和呈现内容,架构更复杂且需要实际的伺服器待命运作。
我的经验
如果你的网站为轻量级且很少更新的静态页面,使用 Git Based 的 CMS 或完全不使用 CMS 是不错的选择,但如果你的网站横跨多个平台或有动态的需求则可以考虑 API Driven 类型的 CMS。
- Front Matter CMS - 如果只是要一个简单快捷的 CMS 介面在 VSCode 当中是个不错的选择,完全支援 Astro。
- Decap CMS - 最成熟的开源免费 Git Based CMS 方案,功能该有都有。前身为 Netlify CMS。
- Strapi - 最成熟的开源且可自架的 API Driven CMS 方案也有提供线上伺服器服务。
推荐选择开源可自己架设的 CMS,原因是因为通常到最后都会有供应商绑定(Vendor Lock-in)的问题,但自架通常也会耗费大量的时间,因此依照当下需求评估即可。
总结
本章节了解了 CMS 与 无头 CMS 的差别,这类管理内容的工具并非必备,你仍然可以透过编写 Markdown 或原始码来编辑网页内容。添加 CMS 对于非开发人员管理网站至关重要,同时也能增进
参考资料
- Use a CMS with Astro - Astro
- Day25 - 串接 CMS - 相同文章同步发布于 iThome 铁人赛中