官网要一份内容,App 要一份,小程序还要一份。改一次文案,三个地方各发一遍。

问题不在于"系统不够多",而在于内容和页面绑死了。Strapi 这类无头 CMS 的做法是:内容只维护一份,通过 API 给所有前端用。

Strapi:内容与展示彻底分开

内容和页面绑死之后

传统 CMS(比如直接建站的那种)把内容和页面模板放在一起,好处是上手快,代价是:

  • 内容只能在那一套页面里用,换个终端就得重来
  • 前端技术栈被固定住,想换框架基本等于重做
  • 改文案要登录后台改模板,改版风险高
  • 内容没法给 App、小程序、第三方渠道复用

Strapi 的用法

Strapi 怎么用

内容与展示分离。 内容在 Strapi 里维护,通过 API 提供给任意前端——官网用 Next.js、App 用原生、小程序另接,都读同一份内容。

可视化建内容模型。 不写代码就能定义"文章有哪些字段、什么类型",改结构也不用迁移数据库。

自动生成 API。 REST 和 GraphQL 都支持,模型建好接口就有了,不用额外写后端。

媒体库管理。 图片、视频集中管理,可以存本地也可以接对象存储。

权限与角色。 内容编辑、审核、发布按角色分权,多人协作不会互相覆盖。

可自托管。 Docker 或 Node 部署,内容数据在自己手里。

什么时候该用,什么时候不该用

适合与不适合

场景 是否合适
多终端共用一套内容 非常适合
需要自定义内容结构 非常适合
只想快速搭个博客 偏重,可考虑更轻的方案
强依赖可视化建站 不合适,它不负责页面

关键认知:Strapi 不管你的页面长什么样。它只负责内容的结构、存储和分发,页面完全由你的前端决定。想要"拖拖拽拽就能建站"的话,它不是那类工具。

上手流程

三步上手

  1. 部署 — 本地用脚手架初始化,服务器用 Docker 部署
  2. 建模型 — 在管理后台定义内容类型和字段结构
  3. 接前端 — 调 REST 或 GraphQL 接口拿内容,前端自由呈现

一点提醒

前期把内容模型想清楚。 模型改起来不难,但改完前端也要跟着改,尤其是内容已经积累之后。

媒体存储早期就要规划。 默认本地存储在多实例部署时会出问题,量一大建议直接接对象存储。

权限别默认全开。 API 默认可能允许公开读取,正式上线前务必检查角色的权限配置。

对"一份内容供多个终端"这个需求,Strapi 是目前最主流也最成熟的自托管方案之一——搭建一次,之后所有终端都受益。

项目地址: https://github.com/strapi/strapi