一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情。
温馨提示🔔:
本文仅建议参考,有不确切的内容可以在评论区提出,我会及时查证并修订,避免造成对后来者的误导。
我暂时还不太清晰从哪些角度对 CMS 进行背调,标题有些误导人了,有头和无头CMS或许不能直接相提并论,也希望有掘友可以帮忙指条明路。
就产品实现而言,或还要看CMS的市场份额(主要指有头CMS?),结合实际团队现有技术栈考虑,使用有头和无头CMS的难易度比较又如何等等…
踩坑里了….难受..AI 的辅助也十分有限,尤其是涉及数据…..npm数据趋势我手动查找下来..这是否公平正确也不知道..因为他们的诞生年份等原因….不知道怎么评估啊..
这篇文章还是看看就好了,,可能烂尾,现在在修订第二波..
或许这篇文章并没有什么意义?..
如对文章阐述形式有改进的建议,欢迎评论区提出 :applause👏。
本文涉及的 (Worth Noted Nouns) 值得注意的名词在文章末尾,可通过大纲链接提前查看相关解释。
本文涉及框架的 Github、官网、npm包地址在文末给出。
Strapi 基本描述 📃
- Strapi 是一款产品
- Strapi 是一个灵活的、开源的内容管理框架(CMS)
Strapi 的使用场景有哪些?🎯
- 构建复杂的网站和应用程序:Strapi 提供了一个灵活的数据模型和 API 构建工具,使得开发人员可以轻松地构建复杂的网站和应用程序。
- 快速构建原型和 MVP:Strapi 允许您快速创建原型和 MVP,因为它提供了自定义数据模型和字段、快速 API 构建工具、可视化管理面板等功能。
- 创建头内容管理系统(CMS):由于 Strapi 具有强大的数据模型和管理界面,它可以用作灵活的内容管理系统,适用于各种不同的网站和应用程序。
- 作为无头 CMS 的后端:Strapi 适合作为无头 CMS 的后端,因为它提供了一个可定制的 API,使得开发人员可以在任何前端框架中使用。
- 构建电子商务网站:由于 Strapi 具有灵活的数据模型和 API 构建工具,因此它适合构建电子商务网站,特别是需要大量定制功能的网站。
Strapi 及相似产品对比
Strapi 与其相似产品的介绍?
- Strapi:Strapi 是一个基于 Node.js 的开源 CMS 框架,可用于构建 RESTful API 和网站。它拥有一个可视化的界面,使得创建和管理内容变得非常容易,同时还支持插件和第三方集成。
- KeystoneJS:KeystoneJS 是一个灵活的、开源的 Node.js CMS 和 web 应用程序框架,它使用 MongoDB 或 MySQL 作为数据存储。拥有类似于 Django Admin 的管理界面和一组强大的构建工具。它还支持 GraphQL 和 RESTful API,并支持自定义字段和数据类型。
- Directus:Directus 是一个开源的、无头的 CMS 和 API 管理平台,它提供了一个可定制的 API 和可视化的管理界面,可用于构建各种类型的应用程序。
- Built entirely in TypeScript (in Node and Vue)
- 纯粹的 Headless CMS:Directus 是一个纯粹的 Headless CMS,它不会预先定义数据模型或数据结构,用户可以根据需要完全自定义自己的数据模型和内容结构。这使得 Directus 更加灵活,适用于不同的应用场景。
- 多语言支持:Directus 支持多语言内容管理和翻译,并提供了可视化的语言翻译界面,使得内容翻译更加方便和高效。
- 数据库和存储支持:Directus 支持多种数据库和存储后端,包括 MySQL、PostgreSQL、SQLite、MongoDB、AWS S3 等,用户可以根据自己的需求进行选择。
- 易于扩展:Directus 提供了一个强大的插件系统,用户可以使用插件来扩展其功能和定制化特定的需求。
- Directus 是一个非常灵活、功能丰富的 Headless CMS 框架,适用于需要高度自定义的应用场景。虽然在社区和市场上,它的知名度可能不如 Strapi、KeystoneJS、Ghost 和 ApostropheCMS,但是它在一些特定场景中已经被广泛使用和认可。
- Cockpit:Cockpit 是一个轻量级的、开源的内容管理框架,它提供了一个灵活的数据模型、可定制的 API 和可视化的管理界面,适用于构建各种类型的应用程序。
- ApostropheCMS:ApostropheCMS 是一个开源的 Node.js CMS 和 web 应用程序框架,它提供了一个可定制的数据模型、可视化的管理界面和内置的 SEO 优化功能。专门用于构建内容驱动的网站和数字产品。它具有一些独特的功能,如片段编辑器、可嵌入的内容、可定制的模块和一个自动生成的管理界面。
- Wagtail:Wagtail 是一个基于 Django 的开源 CMS,它提供了一个可定制的数据模型、可视化的管理界面和强大的内容审核和工作流功能。
- WordPress: WordPress 是一款流行的开源内容管理系统(CMS),可以用于创建各种类型的网站,包括博客、商店、社交网络等等。它是一个基于 PHP 和 MySQL 的平台,提供了许多易于使用的工具和功能,使用户可以轻松地创建和管理网站。
- Ghost: Ghost 是一个开源博客平台,专门用于创建博客,支持 Markdown 编写和发布内容,也可以扩展使用JavaScript进行开发。它也拥有大量的npm下载量和很高的GitHub Star数,并具有简单易用的用户界面和自定义主题的功能。
Node.js 社区中较流行的4款框架的数据表现📊
下表数据仅供参考。
以下是 Strapi、KeystoneJS、Ghost 和 ApostropheCMS 四个框架的一些基本数据,这些数据是基于它们的 GitHub 仓库信息以及 NPM 下载量和使用情况等方面进行比较的。
表格中使用了一些关键指标,例如 GitHub 星级、Forks 数量、Contributors 数量、最新版本的发布时间和 NPM 下载量等。
这些数据来源于 2023 年 4 月 14 日的情况。
CMS 框架 | GitHub 星级 | Forks 数量 | Contributors 数量 | 最新版本/Tags发布时间 | NPM 下载量 |
---|---|---|---|---|---|
Strapi | 31,346 | 6,619 | 1,304 | 2023 年 3 月 25 日 | 31,600,000+ |
Keystone | 7,583 | 1,077 | 128 | 2023 年 3 月 17 日 | 778,000+ |
Ghost | 37,802 | 7,524 | 593 | 2023 年 3 月 31 日 | 7,280,000+ |
ApostropheCMS | 2,407 | 486 | 61 | 2022 年 10 月 13 日 | 30,000+ |
下表数据为作者本人手动查找统计的数据,乐观统计。
时间:2023/4/14。
CMS 框架 | GitHub 星级 | Forks 数量 | Contributors 数量 | 最新版本/Tags发布时间 | NPM 下载量 2013/1/1 - 2023/4/13 | NPM 下载量 2022/1/1 - 2023/4/13 |
---|---|---|---|---|---|---|
Strapi | 53.1k | 6,619 | 1,304 | 2023 年 4 月 13 日 | 9,540,437 | strapi: 1,349,745@strapi/strapi: 2,936,719 Total: 4,286,464 |
Keystone | 7.8k | 1,077 | 228 | 2023 年 3 月 17 日 | 1,168,826 | 83,258 |
Ghost | 42.9k | 9.3k | 593 | 2023 年 4 月 13 日 | 1,767,169 | 400,531 |
ApostropheCMS | 4k | 540 | 102 | 2023 年 4 月 14 日 | 30,000+ | 138,113 |
Directus | 20.9k | 2.6k | 292 | 2023/4/14 | 581,788 | 405,167 |
上述4款框架的发布时间线
- Strapi:
- 2016 年 11 月:首次发布了 Strapi 的 0.1 版本。
- 2017 年 8 月:发布了 Strapi 3.0 版本,这是完全重写的版本,使用了最新的技术栈和全新的架构。
- 2020 年 9 月:发布了 Strapi 3.1 版本,增加了多语言支持、新的插件、RBAC 权限控制等功能。
- 2021 年 3 月:发布了 Strapi 3.5 版本,增加了头条集成、可配置的角色和权限等功能。
- 2022 年 3 月:发布了 Strapi 4.0 Alpha 版本,增加了 GraphQL 的集成和一些新的 API 功能。
- KeystoneJS:
- 2013 年 5 月:首次发布了 KeystoneJS 的 0.1 版本。
- 2015 年 1 月:发布了 KeystoneJS 0.3 版本,增加了 GraphQL 支持和文件上传功能。
- 2018 年 5 月:发布了 KeystoneJS 4.0 版本,支持 React 16 和 Node.js 8,增加了权限系统等功能。
- 2021 年 2 月:发布了 KeystoneJS 6.0 Beta 版本,支持 TypeScript,增加了新的 UI 组件等功能。
- Ghost:
- 2013 年 9 月:首次发布了 Ghost 的 0.3 版本。
- 2014 年 9 月:发布了 Ghost 0.5 版本,增加了标签、静态页面等功能。
- 2017 年 4 月:发布了 Ghost 1.0 版本,重构了后端架构,增加了多作者支持、页面和标签集成等功能。
- 2020 年 4 月:发布了 Ghost 3.0 版本,增加了 AMP 和 Koenig 编辑器等功能。
- 2022 年 2 月:发布了 Ghost 4.0 版本,增加了新的博客模板和网站工具等功能。
- ApostropheCMS:
- 2009 年:首次发布了 ApostropheCMS 的 0.1 版本。
- 2016 年:发布了 ApostropheCMS 2.0 版本,重构了后端架构,增加了全文搜索、可嵌入内容等功能。
- 2020 年:发布了 ApostropheCMS 3.0 版本,支持 Headless CMS 和 GraphQL,增加了新的编辑器等功能。
- Directus:
- 2015年:Directus 7 发布,是一个基于 AngularJS 的开源项目,提供了一个管理界面和 RESTful API。
- 2018年:Directus 7.5 发布,加入了对多语言支持的本地化翻译和管理,以及对自定义字段类型和表单验证规则的支持。
- 2019年:Directus 8 发布,是一个全新的基于 Vue.js 的重构版本,重写了管理界面和 API,同时提供了许多新功能,例如扩展 API、多租户支持和自定义界面主题等。
- 2020年:Directus 8.8 发布,引入了更好的 GraphQL 支持、自定义字段类型和许多新的插件。
- 2021年:Directus 9 发布,是一个全新的重构版本,基于 React 和 Node.js,提供了许多新的功能,例如本地化、自动化工作流程、高级权限控制、实时同步和自定义部署等。
- Directus 9.5.0:2022 年 2 月 15 日发布,新增了支持自定义表单验证规则的功能,支持通过 JavaScript 函数编写自定义验证规则,同时还改进了 GraphQL API 的性能和稳定性,并添加了新的 GraphQL 节点,以支持更多的查询操作。
- Directus 9.6.0:2022 年 4 月 15 日发布,引入了一个全新的插件系统,使用户能够通过插件扩展 Directus 的功能和界面。此外,该版本还加入了对 AWS S3 存储的支持,并改进了多语言支持和界面主题的功能。
- Directus 9.7.0:2022 年 8 月 23 日发布,增强了工作流程和权限控制功能,引入了审批流程和自定义角色权限,以及允许管理员根据具体需求定制不同的审核规则。此外,该版本还增强了 GraphQL API 的功能,允许用户通过参数自定义返回结果集,从而更灵活地满足业务需求。
Strapi 同其类似产品功能对比的表格输出
框架 | 主要优点 | 数据存储 | 技术栈 | 是否支持头部和无头 CMS |
---|---|---|---|---|
Strapi | 灵活的数据模型和 API 构建工具、可视化管理面板、强大的插件生态 | MongoDB、PostgreSQL、MySQL 和 SQLite | Node.js、React.js、GraphQL、REST API | 支持头部和无头 CMS |
KeystoneJS | 灵活的数据模型和 API 构建工具、可视化管理面板、插件生态丰富 | MongoDB 和 MySQL | Node.js、Express.js、React.js、GraphQL、REST API | 支持头部和无头 CMS |
Directus | 可定制的 API 和可视化的管理界面、数据模型灵活 | PostgreSQL、MySQL 和 SQLite | PHP、Vue.js、GraphQL、REST API | 支持无头 CMS |
Cockpit | 灵活的数据模型和 API 构建工具、可视化管理面板、插件生态丰富 | MongoDB | PHP、Vue.js、GraphQL、REST API | 支持头部和无头 CMS |
ApostropheCMS | 可定制的数据模型和可视化的管理界面、SEO 优化 | MongoDB | Node.js、Express.js、Handlebars、REST API | 支持头部和无头 CMS |
WordPress | 易用性高、插件和主题生态丰富、社区活跃 | MySQL 和 MariaDB | PHP、JavaScript、REST API | 支持头部 CMS |
Strapi 及其类似产品使用量及流行度对比的表格输出📊
包名 | 年下载量 | 月下载量 | 周下载量 |
---|---|---|---|
Strapi | 8,231,834 | 597,537 | 138,702 |
Directus | 873,028 | 58,987 | 14,357 |
Cockpit | 656,116 | 48,155 | 10,695 |
Cockpit CMS | 486,712 | 34,410 | 7,214 |
KeystoneJS | 1,019,686 | 51,274 | 11,554 |
ApostropheCMS | 74,051 | 4,486 | 1,238 |
Ghost | 2,316,228 | 124,068 | 27,684 |
上述图表为五者 npm 下载量的 年、月、周对比数据总结📊
本段落总结
- 先说结论:我们就用 Strapi 基本上不会出什么问题,看官网的页面精美程度就让人十分安心。
- Keystone 虽然 Github Release 有在近期更新,但是 npm package 的发布已经是四年前了。
- Apostrophe npm 下载量在 2015-2016 有一个高峰期,贡献了保守估计 90% 的下载量。
- 跟 Strapi 能打一点的可能是 Directus 了?
- Ghost 与 WordPress 不该与基于 Node.js 的 CMS 框架直接进行比较?技术栈和应用面有所不同。
Strapi 与 WordPress 对比相关
Notive: WordPress.com 是 WordPress 的商业托管版本。很容易将其与 WordPress.org 混淆,后者是开源、自托管的 WordPress。
WordPress 是用 PHP 后端编写的,但前端是可定制的,因此您可以将它与无头 JavaScript 平台一起使用。
所以 WordPress 应该还是有点讨论的意义?
WordPress 与其前五者的相同点和不同点
相同点:
- 都是内容管理系统:WordPress 和前5者都是内容管理系统,用于构建和管理网站、博客和其他形式的内容。
- 都支持自定义内容模型:WordPress 和前5者都支持自定义内容模型,允许用户根据实际需求自由定义内容类型、字段和关系等。
- 都具有可扩展性和灵活性:WordPress 和前5者都具有一定的可扩展性和灵活性,可以通过插件、模板和开发扩展和定制功能。
- 都具有多用户和权限管理功能:WordPress 和前5者都具有多用户和权限管理功能,允许管理员和编辑者等角色对内容进行管理和发布。
不同点:
- 技术栈:WordPress 是基于PHP技术栈构建的,而前5者大多使用Node.js等现代技术栈。
- 定位和用途:WordPress 是一个完整的博客和网站建设平台,具有大量的博客和CMS相关功能,而前5者则更侧重于作为开发框架和CMS构建器。
- 界面和操作方式:WordPress 提供了强大的管理界面和可视化编辑器等功能,而前5者则大多采用代码驱动和自定义开发的方式,需要一定的开发技能和经验。
- 社区生态:WordPress 拥有庞大的社区和生态系统,包括大量的主题、插件、模板和开发者社区等资源,而前5者则相对较小。
- 部署和扩展方式:WordPress 可以使用共享主机、虚拟私有服务器和云托管等多种方式进行部署和扩展,而前5者则更依赖于自主部署和云原生架构。
Strapi 与 WordPress 产品功能对比
仅供参考 直接有头 和 无头 CMS 的领军角色进行对比吧。
功能 | Strapi | Directus | WordPress |
---|---|---|---|
数据库支持 | MongoDB、PostgreSQL、MySQL、SQLite、MariaDB | MySQL、PostgreSQL、SQLite、Microsoft SQL Server、MongoDB、Amazon Aurora | MySQL、MariaDB、PostgreSQL、SQLite、Microsoft SQL Server |
API 构建 | 内置 RESTful 和 GraphQL API | 即时提供 REST + GraphQL | 内置 REST API,需要插件支持 GraphQL |
管理界面 | 自定义管理界面,易于使用和定制 | 内置后台管理界面,具有相对较高的学习曲线 | |
自定义字段 | 支持自定义字段和关系 | 支持自定义字段,可根据需求进行定制化开发 | 支持自定义字段,但需要使用插件来支持自定义关系 |
主题和插件 | 提供强大的插件系统和开发者工具,可以扩展功能和自定义界面 | 提供灵活的插件系统和扩展性,可以自定义功能和界面 | 拥有丰富的插件和主题库,易于扩展和定制 |
安全性 | 内置安全性功能,如 CSRF 和 XSS 预防。 严格的安全机制,支持数据加密和访问控制 | 严格的安全机制,支持数据加密和访问控制 | 一些安全性功能需要插件来支持安全性较差,容易受到攻击 |
性能 | 非常快速,特别是对于大量的数据 极高的性能表现,支持横向扩展 | 极高的性能表现,支持横向扩展 | 相对较慢,尤其是在大量数据的情况下 性能相对较弱,不适合大型数据集和高并发应用场景 |
学习曲线 | 学习曲线相对陡峭,但易于上手,需要一定的开发经验和技能 | 学习曲线相对平缓,容易上手,可定制性高 | 学习曲线较浅,上手快,易于使用 |
适用场景 | 适合构建复杂的、可扩展的应用程序 适用于中小型企业和创业公司的多种应用场景,包括博客、电子商务、CMS、物联网等 | 适用于企业级和中小型项目,特别适合大型数据集和数据驱动型应用场景 | 适合构建博客、新闻网站等简单的网站、个人博客、企业门户、中小型网站等 |
工作流管理 | 提供工作流管理功能 | 可以通过自定义脚本实现工作流管理功能 | 可以通过插件实现工作流管理功能 |
多语言支持 | 支持多语言内容管理和本地化翻译 | 支持多语言内容管理和本地化翻译 | 提供基础的多语言支持 |
用户权限控制 | 支持基于角色的权限控制,可以配置细粒度的用户权限 | 支持多租户环境和用户角色权限,可以自定义管理和操作权限 | 提供基础的用户角色和权限管理功能 |
数据可视化 | 可以通过自定义仪表盘展示数据 | 可以通过自定义报表展示数据 | 可以通过插件实现数据可视化 |
社区支持和生态环境 | 拥有活跃的社区支持和完善的生态环境 | 拥有活跃的社区支持和完善的生态环境 | 拥有庞大的社区支持和完善的生态环境 |
本文 (Worth Noted Nouns) 值得注意的名词
什么是 无头CMS
和 有头CMS
?
有头(Headful)CMS 和无头(Headless)CMS 是两种不同的内容管理系统架构。
有头CMS 即 传统CMS?。最常见的 CMS 就是博客系统,作者登录管理后台写文章,点击发布后读者就可以访问指定网址,看到作者发布的内容。
有头CMS是指将前端展示层和后端数据管理层绑定在一起,通常由一个完整的系统提供整体解决方案,包括网站搭建、内容管理、用户管理、模板等方面的功能。
无头 CMS 就是指:仅包含内容管理的后台,没有现成的前台展示,前台需要自己实现。
无头CMS是将前端展示层和后端数据管理层分离开来,后端提供数据API和管理功能,前端则使用API获取数据并自主构建展示层和用户界面。无头CMS通常具有更高的灵活性和可扩展性,适合用于构建多平台、多设备和多应用场景的应用。
总体来说,有头CMS适合那些需要快速搭建和运营网站、博客和其他在线内容的用户,而无头CMS则适合那些需要更加灵活、多样化和创新化的用户和应用场景。
产品对比环节中,什么是横向对比?什么是纵向对比?
在产品比较的环节中,有两种主要的比较方式:横向对比和纵向对比。
横向对比是指将同一类别或类型的产品进行比较。例如,如果你正在比较不同品牌的手机,你会将它们的处理器速度、屏幕分辨率、相机性能等进行横向对比,以帮助你做出决定。
纵向对比则是指比较同一产品在不同时间点或不同版本之间的差异。这种比较通常是针对产品升级和更新而进行的。例如,如果你正在比较同一款手机的两个不同版本,你会将它们的硬件规格、操作系统、应用程序和其他功能进行纵向对比,以确定它们之间的区别和改进之处。
在 Strapi 和 WordPress 的比较中,表格呈现了两者功能的横向对比,例如它们的数据库支持、API 构建能力、管理界面、自定义字段支持、安全性、性能、可扩展性、学习曲线和适用场景等。
本文涉及框架的相关链接
template:
Github
Official Website
Npm Package
Strapi
Strapi - Open source Node.js Headless CMS 🚀
如果你直接查 strapi 的 npm 包,可能会查到这个
3.6.11
deprecated
版本包的地址: strapi - npm (npmjs.com)。它们名称不同,新版 npm 包名称为:
@strapi/strapi
,旧版包名称为:strapi
。 新版带有组织名。
@strapi/strapi - npm (npmjs.com)
Directus
Directus: The Modern Data Stack, Democratized
Ghost
Ghost: The Creator Economy Platform
Keystone
KeystoneJS: The superpowered Node.js Headless CMS for developers - Keystone 6
ButterCMS
ButterCMS提供多种语言的SDK包。
ButterCMS/buttercms-js: Node/JS API client for ButterCMS (https://buttercms.com) (github.com)
Ditch your legacy CMS and build better with Butter | ButterCMS
Apostrophe
The website builder solution you've been looking for (apostrophecms.com)
FYI - Websites / Pages
7 款殿堂级的开源 CMS(内容管理系统) - 知乎 (zhihu.com)
会前端:推荐 strapi 。它背后有商业化公司支持。
不会前端,但懂后端:推荐 Ghost。它玩法多、社区活跃、有免费主题。
会 Python:django-cms 容易接受,wagtail 则更新、势头更猛。
不会编程:首选 WordPress 因为它成熟简单,编程相关的东西都被藏在了背后。
CMS 的过去、现在以及未来 - 掘金 (juejin.cn)
【学习图片】14.网站生成器、框架和内容管理系统 - 掘金 (juejin.cn)
开源丨CloudBase CMS 内容管理系统!简单易用企业内容管理流 - 掘金 (juejin.cn) 2021 年 15 个最佳和最受欢迎的 CMS 平台(比较) - 知乎 (zhihu.com)
WordPress.com 是 WordPress 的商业托管版本。很容易将其与 WordPress.org 混淆,后者是开源、自托管的 WordPress。
WordPress 是用 PHP 后端编写的,但前端是可定制的,因此您可以将它与无头 JavaScript 平台一起使用。
2023年CMS内容管理系统全球市场份额 - 闪电博 (wbolt.com)
2023年,WordPress 保持其作为最受欢迎的 CMS 的领先地位。
WordPress是第一大平台,为互联网上43.2%的网站提供动力,约占CMS市场份额的63.5%。
Q&A 疑问
基于不同技术语言实现的 CMS 是否应该混为一谈呢?
蹲一波远程工作机会或外包,新手。。不知道有没有可能不线下上班
内容整理不易,如果觉得有帮助的话还望点赞支持一下,谢谢🙏。
....肝了大半天...