14个无头cms的评论2019

不久前,在我工作过的俄罗斯市场一家著名的上市公司中,出现了有关使用无头cms的问题。 在许多实现中,必须选择一种。 这是一个关于我如何形成选择标准,如何分析cms以及如何使我认为我需要自己编写的故事。 切口下有14个无头cms的概述。



什么是无头CMS?


尽管该术语并不陌生,但由于某种原因,该主题在俄语语言Internet中很少涉及。 因此,根据维基百科
无头内容管理系统无头CMS是仅后端的内容管理系统(CMS),它是从头开始构建的内容存储库,可通过RESTful API访问内容以在任何设备上显示。
无头内容管理系统无头CMS是基于服务器的内容管理系统(CMS),最初是内容的存储库,并通过RESTful API提供对内容的访问以在任何设备上显示。

换句话说,无头cms是一个概念,是cms-ok的一种特殊类型,根据该概念,cms仅负责管理“纯”内容。 这使您可以将由cms管理的数据层与由客户端应用程序控制的显示层分开。 内容以通用格式(通常以JSON)分发,这使得可以同时管理网站,移动应用程序和连接到Internet的任何设备。

您可以在本文本章中维基百科的文章中进一步了解这种概念的利弊。

浸入上下文


为了确定搜索条件并了解哪个无头cms比其他无头cms,我不得不回答这个问题-最好的是什么? 它应该解决哪些具体任务以及如何解决?

为了展示我当前的思路,我提出了一个典型的问题,并使用无头cms之一解决了该问题。 尽管实际上一切都略有不同,但这种叙事格式简洁地反映了本质,并更好地揭示了无头cms的主题。

因此,让我们想象一下一项任务正在开发中。 该网站需要实施一个新部分,用户可以在其中阅读电影评论。
条件如下:
  • 目前,您只需要显示电影的名称,海报,导演的姓名和评论文字,但将来结构会变得更加复杂,有关费用,演员等的信息也会出现;
  • 没有技术背景的人员(内容管理员)将不得不添加和更改评论,为此,不应涉及开发资源;
  • 此功能应禁用,即 需要实现功能切换;
  • 在发布内容之前,内容管理员应能够在测试环境中查看编辑的外观。

这些是来自内部客户的要求。 开发方面具有自己的实施技术愿景,即:
  • 客户应该不能屈膝,即 内容管理员即使愿意也不应破坏任何内容。 它只应编辑开发人员的设想;
  • 应该能够管理版本并在发生问题时回滚;
  • 目前尚不知道将来会出现什么附加功能,这意味着复杂或更改部分应该很容易;
  • 在安全方面:系统应该在我们的服务器上,而不是在陌生的云中,即 应该能够在本地部署。

好吧,任务很清楚。 我作出决定。

我将使用Any JSON CMS ,这是无头cms之一。 我注意到,目前它还不能满足上述所有要求。 例如,内容管理器将无法在测试环境中查看编辑的外观。 但是,所有优点和缺点将在稍后显示。 现在,我试图“感觉”与任何无头cms一起工作的典型场景。

首先要做的是描述模型。 该模型回答了这个问题,内容实体应该是什么样的? 她的结构是什么? 本质上,这是cms与客户端应用程序之间交互的协议。 在我们的案例(电影回顾)中,对象包含:
  • 3个必填属性:电影标题,电影海报,评论文本;
  • 1个可选属性:对象“ director”,其中又包含2个必需属性的名称和姓氏。

在JSON模式中,视图模型如下所示:
{ type: 'object', required: ['movieName', 'moviePoster', 'reviewText'], additionalProperties: false, properties: { movieName: { type: 'string', minLength: 1, maxLength: 300, }, moviePoster: { type: 'string', description: 'URL to file', }, movieProducer: { type: 'object', required: ['name', 'surname'], additionalProperties: false, properties: { name: { type: 'string', maxLength: 100, minLength: 1 }, surname: { type: 'string', maxLength: 100, minLength: 1 }, }, }, reviewText: { type: 'string', minLength: 1, maxLength: 3000, }, }, } 

您还需要实现功能切换,JSON Schema形式的模型如下所示:
 { type: 'object', required: ['isFeatureActive', 'name'], additionalProperties: false, properties: { isFeatureActive: { type: 'boolean' }, name: { type: 'string', enum: ['movieReviewFeatureToggle'] }, }, } 

了解模型的外观后,可以在Any JSON CMS中创建模型。



我立即创建内容实体,即 内容本身,基于模型。 一个虚拟评论和功能切换实体。



要将客户端应用程序与cms集成,需要API密钥。 我在相应的部分cms中生成它。


现在,一切准备就绪,可以在客户端应用程序中实现功能并与cms集成。 客户端应用程序可以是任何内容-网站或移动应用程序,或两者都可以用任何内容编写。 例如,我在React的SPA站点上实现功能。 实际上,我们从cms获取具有已知的固定结构的数据,并以所需的方式显示它。
 import React, { Component } from 'react' import { Accordion, AccordionItem, AccordionItemTitle, AccordionItemBody, } from 'react-accessible-accordion' import 'react-accessible-accordion/dist/fancy-example.css' const apiUrl = 'https://api.anyjsoncms.com' // ApiKey      const apiKey = '87414950dfd15648ea560bd89dd0ee02bfc8fcca' class App extends Component { constructor(props) { super(props) this.state = { movies: null, isFeatureActive: null, loading: true, } } componentDidMount() { const options = { method: 'GET', headers: { ApiKey: apiKey } } Promise.all([ fetch(`${apiUrl}/entries?apiId=featureToggle`, options).then(resp => resp.json() ), fetch(`${apiUrl}/entries?apiId=movieReview`, options).then(resp => resp.json() ), ]) .then(([featureToggleResp, movieReviewResp]) => { const featureToggle = featureToggleResp.find( item => item.value.name === 'movieReviewFeatureToggle' ) const isFeatureActive = featureToggle && featureToggle.value && featureToggle.value.isFeatureActive const movies = movieReviewResp.map(item => item.value) this.setState({ movies, isFeatureActive, loading: false }) }) .catch(error => { console.error(error) }) } render() { const { movies, isFeatureActive, loading } = this.state if (loading) return <div>Loading...</div> if (!isFeatureActive) return <div style={{ display: 'none' }}>Section is hidden</div> return ( <div> <Accordion> {movies.map( ({ movieName, moviePoster, movieProducer, reviewText }, index) => ( <AccordionItem key={index}> <AccordionItemTitle> <h3>{movieName}</h3> </AccordionItemTitle> <AccordionItemBody> <img src={`${apiUrl}${moviePoster}`} alt="" /> {!movieProducer ? null : ( <div>{`${movieProducer.name} ${ movieProducer.surname }`}</div> )} <div>{reviewText}</div> </AccordionItemBody> </AccordionItem> ) )} </Accordion> </div> ) } } export default App 

仅此而已。 现在,内容管理员可以轻松地管理评论,并且还可以使用功能切换来启用和禁用功能。

显示电影评论是一个简单的例子,我故意引用它,以免被淹没,而只是为了说明原理。 实际上,特征可能要复杂一个数量级。 它可以是界面元素,产品目录,复杂的小部件,登录页面,表单生成器,帖子等。此外,在此示例中,cms仅分发信息,但是大多数无头cms提供了CRUD API,例如可以处理表单,以及通常操纵实体,无论如何。 通常,无头cms的想法恰恰是为实现任意复杂的协议提供自由和便利,以便根据需要将控制权转移到任何cms。

选择标准和分析无头cms


在了解了使用无头cms可以解决哪些任务以及如何解决这些问题之后,我选择了标准并开始研究系统。 根据headlesscms.org的数据,当前的高度为54厘米。 对所有这些进行分析是一个非常耗时的过程,因此我重点介绍了14个最受欢迎,值得注意和讨论过的系统:任何JSON CMS,Contentful,Strapi,GraphCMS,Squidex,Butter CMS,Cloud CMS,ockpit,Cosmic JS,Directus,Kentico Cloud,Netlify CMS ,Prismic,Ghost。

结果以表格的形式更方便研究。 但是在这里重复。

任何JSON CMS


网站anyjsoncms.com
内容描述无头CMS,可帮助管理任何JSON并将其传递到任何应用程序
目标受众数字团队
每月价格预先授权-免费
商业支持机会是的
推特上的关注者0千
Github明星(如果开源)0千
开源解决方案是的
本地软件是的
云服务没有啦
GraphQL API没有啦
REST API是的
内容实体是基于模型创建的。是的
可以创建自己的模型是的
可以通过UI创建自己的模型是的
一个模型可能包含到另一个模型的链接。是的
可以合并链接(例如,一个模型可以链接到两个模型之一)没有啦
可以创建嵌套模型(例如,一个对象包含另一个对象)是的
可以组合模型(例如,字段可以是字符串或数字)没有啦
可以指定基于特定模型可以创建多少个内容实体没有啦
管理模型与内容实体之间检测到的冲突(例如,如果更改模型以使现有内容实体不满足这些更改,系统是否能够解决此类情况?)是的
阅读内容实体的API是的
停止,更新,删除内容实体的API没有啦
模型的CRUD API没有啦
API支持访问令牌是的
通过API访问令牌区分对API的访问权限没有啦
发布系统:草稿/发布没有啦
延迟发布能力没有啦
修复模型版本没有啦
提交内容实体版本没有啦
类似于Git的版本控制系统没有啦
项目管理是的
影像管理是的
档案管理是的
网络挂钩没有啦
用户管理没有啦
用户访问控制没有啦

有满足感


网站contentful.com
内容描述只需更新一次并在任何地方发布,因此团队可以更快地构建数字产品。
目的地多渠道世界中的内容管理
目标受众数字团队,企业
每月价格云-免费,$ 39,$ 879,企业的隐藏价格
商业支持机会是的
推特上的关注者3.36万
Github明星(如果开源)不开源
开源解决方案没有啦
本地软件没有啦
云服务是的
GraphQL API是的
REST API是的
内容实体是基于模型创建的。是的
可以创建自己的模型是的
可以通过UI创建自己的模型是的
一个模型可能包含到另一个模型的链接。是的
可以合并链接(例如,一个模型可以链接到两个模型之一)是的
可以创建嵌套模型(例如,一个对象包含另一个对象)没有啦
可以组合模型(例如,字段可以是字符串或数字)没有啦
可以指定基于特定模型可以创建多少个内容实体没有啦
管理模型与内容实体之间检测到的冲突(例如,如果更改模型以使现有内容实体不满足这些更改,系统是否能够解决此类情况?)没有啦
阅读内容实体的API是的
停止,更新,删除内容实体的API是的
模型的CRUD API是的
API支持访问令牌是的
通过API访问令牌区分对API的访问权限是的
发布系统:草稿/发布是的
延迟发布能力没有啦
修复模型版本是的
提交内容实体版本是的
类似于Git的版本控制系统没有啦
项目管理是的
影像管理是的
档案管理是的
网络挂钩是的
用户管理是的
用户访问控制是的

Strapi


网站绑架
内容描述管理您的内容。 分发到任何地方。
目的地毫不费力地构建功能强大的内容API
目标受众专业开发人员
每月价格预先授权-免费
商业支持机会是的
推特上的关注者2.3千
Github明星(如果开源)1.11万
开源解决方案是的
本地软件是的
云服务没有啦
GraphQL API是的
REST API是的
内容实体是基于模型创建的。是的
可以创建自己的模型是的
可以通过UI创建自己的模型是的
一个模型可能包含到另一个模型的链接。是的
可以合并链接(例如,一个模型可以链接到两个模型之一)没有啦
可以创建嵌套模型(例如,一个对象包含另一个对象)没有啦
可以组合模型(例如,字段可以是字符串或数字)没有啦
可以指定基于特定模型可以创建多少个内容实体没有啦
管理模型与内容实体之间检测到的冲突(例如,如果更改模型以使现有内容实体不满足这些更改,系统是否能够解决此类情况?)没有啦
阅读内容实体的API是的
停止,更新,删除内容实体的API是的
模型的CRUD API没有啦
API支持访问令牌没有啦
通过API访问令牌区分对API的访问权限是的
发布系统:草稿/发布没有啦
延迟发布能力没有啦
修复模型版本没有啦
提交内容实体版本没有啦
类似于Git的版本控制系统没有啦
项目管理否,但是您可以部署一个单独的cms实例
影像管理是的
档案管理是的
网络挂钩否,但是可以通过生命周期回调实现
用户管理是的
用户访问控制是的
附加信息我研究了Alpha版本,保存模型时存在错误

图形CMS


网站graphcms.com
内容描述将内容带到任何平台
目的地数字产品的内容基础架构
目标受众专业开发商,机构,企业
每月价格云-免费,$ 49,$ 149,$ 499,企业的隐藏价格
商业支持机会是的
推特上的关注者2.4千
Github明星(如果开源)不开源
开源解决方案没有啦
本地软件没有啦
云服务是的
GraphQL API是的
REST API没有啦
内容实体是基于模型创建的。是的
可以创建自己的模型是的
可以通过UI创建自己的模型是的
一个模型可能包含到另一个模型的链接。是的
可以合并链接(例如,一个模型可以链接到两个模型之一)没有啦
可以创建嵌套模型(例如,一个对象包含另一个对象)没有啦
可以组合模型(例如,字段可以是字符串或数字)没有啦
可以指定基于特定模型可以创建多少个内容实体没有啦
管理模型与内容实体之间检测到的冲突(例如,如果更改模型以使现有内容实体不满足这些更改,系统是否能够解决此类情况?)是的,它不允许您更改模型,或者更改导致确认后丢失数据
阅读内容实体的API是的
停止,更新,删除内容实体的API是的
模型的CRUD API没有啦
API支持访问令牌是的
通过API访问令牌区分对API的访问权限是的
发布系统:草稿/发布是的
延迟出版的可能性没有啦
修复模型版本没有啦
提交内容实体版本没有啦
类似于Git的版本控制系统没有啦
项目管理是的
影像管理是的
档案管理是的
网络挂钩是的
用户管理是的
用户访问控制是的

鱿鱼


网站squidex.io
内容描述Squidex使您可以在中央位置管理内容,并将技术堆栈用于应用程序,网站和服务。
目的地我们的首要任务是提供最先进,稳定,快速和免费的内容管理中心,以使开发人员的生活更加轻松。
目标受众专业开发人员
每月价格云-免费,$ 19,$ 49,$ 99; 本地-免费
商业支持机会尚未宣布
推特上的关注者0千
Github明星(如果开源)五千
开源解决方案是的
本地软件是的
云服务是的
GraphQL API是的
REST API是的
内容实体是基于模型创建的。是的
可以创建自己的模型是的
可以通过UI创建自己的模型是的
一个模型可能包含到另一个模型的链接。是的
可以合并链接(例如,一个模型可以链接到两个模型之一)没有啦
可以创建嵌套模型(例如,一个对象包含另一个对象)没有啦
可以组合模型(例如,字段可以是字符串或数字)没有啦
可以指定基于特定模型可以创建多少个内容实体您可以指定一个或多个内容,不能指定特定的数字
管理模型和内容实体之间检测到的冲突(例如,如果更改模型以使现有的内容实体不满足这些更改,那么系统是否能够解决此类情况?)没有啦
阅读内容实体的API是的
停止,更新,删除内容实体的API是的
模型的CRUD API没有啦
API支持访问令牌是的
通过API访问令牌区分对API的访问权限是的
发布系统:草稿/发布是的
延迟发布能力是的
修复模型版本没有啦
提交内容实体版本是的
类似于Git的版本控制系统没有啦
项目管理是的
影像管理是的
档案管理是的
网络挂钩是的
用户管理是的
用户访问控制是的

黄油cms


网站buttercms.com
内容描述在几分钟之内将博客或CMS添加到您的网站。 插入我们的Headless CMS,然后返回更多有趣的问题。
目的地在数分钟内将基于API的CMS放入任何技术堆栈中。
目标受众初创企业,机构,企业
每月价格云-$ 24,$ 83,$ 166,企业的隐藏价格
商业支持机会是的
推特上的关注者0.4千
Github明星(如果开源)不开源
开源解决方案没有啦
本地软件没有啦
云服务是的
GraphQL API没有啦
REST API是的
内容实体是基于模型创建的。是的
可以创建自己的模型是的
可以通过UI创建自己的模型是的
一个模型可能包含到另一个模型的链接。是的
可以合并链接(例如,一个模型可以链接到两个模型之一)没有啦
可以创建嵌套模型(例如,一个对象包含另一个对象)没有啦
可以组合模型(例如,字段可以是字符串或数字)没有啦
可以指定基于特定模型可以创建多少个内容实体没有啦
管理模型和内容实体之间检测到的冲突(例如,如果更改模型以使现有的内容实体不满足这些更改,那么系统是否能够解决此类情况?)没有啦
阅读内容实体的API是的
停止,更新,删除内容实体的API没有啦
模型的CRUD API没有啦
API支持访问令牌是的
通过API访问令牌区分对API的访问权限否(并且不是必需的,因为只能读取)
发布系统:草稿/发布是的
延迟发布能力没有啦
修复模型版本没有啦
提交内容实体版本是的
类似于Git的版本控制系统没有啦
项目管理是的
影像管理是的
档案管理是的
网络挂钩是的
用户管理是的
用户访问控制是的

云cms


网站cloudcms.com
内容描述易于内容编辑+对开发人员功能强大
目的地CMS适用于关键业务应用
目标受众企业版
每月价格200美元,800美元,1200美元
商业支持机会是的
推特上的关注者0.3千
Github明星(如果开源)不开源
开源解决方案没有啦
本地软件是的
云服务是的
GraphQL API是的
REST API是的
内容实体是基于模型创建的。是的
可以创建自己的模型是的
可以通过UI创建自己的模型是的
一个模型可能包含到另一个模型的链接。是的
可以合并链接(例如,一个模型可以链接到两个模型之一)是的
可以创建嵌套模型(例如,一个对象包含另一个对象)是的
可以组合模型(例如,字段可以是字符串或数字)没有啦
可以指定基于特定模型可以创建多少个内容实体没有啦
管理模型和内容实体之间检测到的冲突(例如,如果更改模型以使现有的内容实体不满足这些更改,那么系统是否能够解决此类情况?)没有啦
阅读内容实体的API是的
停止,更新,删除内容实体的API是的
模型的CRUD API是的
API支持访问令牌是的
通过API访问令牌区分对API的访问权限没有啦
发布系统:草稿/发布是的,您可以在设置中启用它
延迟发布能力没有啦
修复模型版本是的
提交内容实体版本是的
类似于Git的版本控制系统是的
项目管理是的
影像管理是的
档案管理是的
网络挂钩是的
用户管理是的
用户访问控制是的
附加信息非常强大,有所有芯片级别的企业,甚至更多。 由于功能丰富,您需要更多时间来理解它。

驾驶舱


网站getcockpit.com
内容描述简单内容平台可管理任何结构化内容
目的地将内容管理功能添加到任何站点-即插即用/无头/ API优先CMS
目标受众数字团队
每月价格本地-免费
商业支持机会是的
推特上的关注者七千
Github明星(如果开源)3500
开源解决方案是的
本地软件是的
云服务没有啦
GraphQL API否,但通过安装插件实现
REST API是的
内容实体是基于模型创建的。是的
可以创建自己的模型是的
可以通过UI创建自己的模型是的
一个模型可能包含到另一个模型的链接。是的
可以合并链接(例如,一个模型可以链接到两个模型之一)是的,使用中继器类型
可以创建嵌套模型(例如,一个对象包含另一个对象)是的
可以组合模型(例如,字段可以是字符串或数字)是的,使用中继器类型
可以指定基于特定模型可以创建多少个内容实体不,只能创建单例模型
管理模型和内容实体之间检测到的冲突(例如,如果更改模型以使现有的内容实体不满足这些更改,那么系统是否能够解决此类情况?)没有啦
阅读内容实体的API是的
停止,更新,删除内容实体的API是的
模型的CRUD API仅读取和更新
API支持访问令牌是的
通过API访问令牌区分对API的访问权限是的,通过收藏夹设置
发布系统:草稿/发布没有啦
延迟发布能力没有啦
修复模型版本没有啦
提交内容实体版本是的
类似于Git的版本控制系统没有啦
项目管理否,但是您可以部署一个单独的cms实例
影像管理是的
档案管理是的
网络挂钩是的
用户管理是的
用户访问控制是的,通过组配置
附加信息一个体面的开源解决方案。 某些设置是通过配置而不是通过界面配置的。 , repeater, JSON. PHP.

Cosmic JS


网站cosmicjs.com
内容描述Modern Content Management Solution. The leading CMS for modern digital teams.
The Cosmic JS Headless CMS gives your team everything you need to get the job done.
Digital teams, enterprice
44$, 179$, 449$, 359$, 719$
twitter2,8
Github stars ( open source)open source
Open source
On-premises software
Cloud service
GraphQL API
REST API
, , . 即 -> .
UI
( ), :
  • Object
  • Object Object Type

( )
( , )
(, , , ?)
Read API
Ceate, update, delete API
CRUD API
API access tokens
API API access token, read write
: Draft/Publish
Git
Webhooks

Directus


网站directus.io
内容描述Premium Open-Source Software For Any Data-Driven Project
Directus is an open-source suite of software that provides an instant API wrapper for SQL databases and an intuitive Admin App for non-technical users to manage that content.
Digital teams, enterprice
on-premises — free
twitter19,4
Github stars ( open source)3,8
Open source
On-premises software
Cloud service, -
GraphQL API
REST API
UI
( )
( ), group,
( , )
, singleton
(, , , ?)
Read API
Ceate, update, delete API
CRUD API
API access tokens, , ,
API API access token,
: Draft/Publish
Git
, cms
Webhooks, , php
«Something is wrong with this instance's server or database.» . . 10 . — 5 . , , . . - . , Directus Stable, .. .

Kentico Cloud


网站kenticocloud.com
内容描述Stop Your Content Friction. Collaborate and deliver engaging omnichannel experiences with a CMS that's built for content strategists and developers.
Create engaging personalized experiences across any device with a next-generation headless CMS.
Digital teams, agencies, enterprice
cloud — 0$, 299$, 999$, hidden price for enterprise
twitter1
Github stars ( open source)open source
Open source
On-premises software
Cloud service
GraphQL API
REST API
UI
( )
( ), Content Type Snippets, , snippet snippet
( , )
(, , , ?)
Read API
Ceate, update, delete API, professional
CRUD API, beta , professional
API access tokens, professional
API API access token, API token ,
: Draft/Publish
Git
Webhooks
, contentfull. .

Netlify CMS


网站netlifycms.org
内容描述Open source content management for your Git workflow. Use Netlify CMS with any static site
generator for a faster and more flexible web project
Get the speed, security, and scalability of a static site, while still providing a convenient editing interface for content.
Profesional developers
on-premises — free
twitter3,6
Github stars ( open source)7,4
Open source
On-premises software
Cloud service
GraphQL API
REST API, git
UI, yml
( )
( ), object ,
( , )
(, , , ?)
Read API
Ceate, update, delete API
CRUD API
API access tokens
API API access token
: Draft/Publish, editorial_workflow on, GitHub
Git
, cms
, , ,
, , ,
Webhooks
, cms , git ( bitbucket, github, gitlab .)
, git
— 2.5.1. CMS — . , git .

Prismic


网站prismic.io
内容描述One CMS Backend for all your Websites & Apps
CMS for apps, e-commerce, editorial websites, corporate websites. Enables marketing teams to create highly targeted acquisition campaigns.
Digital teams, enterprice
cloud — 0$, 7$, 15$, 100$, 500$
twitter12,1
Github stars ( open source)open source
Open source
On-premises software
Cloud service
GraphQL API, alpha
REST API
UI
( )
( ), «group — a repeatable group of fields», , group group
( , )
, singleton
(, , , ?), .. ,
Read API
Ceate, update, delete API
CRUD API
API access tokens
API API access token( , .. read)
: Draft/Publish
Git
Webhooks
, Professional

Ghost


网站ghost.org
内容描述Ghost is a fully open source, adaptable platform for building and running a modern online publication. We power blogs, magazines and journalists from Zappos to Sky News.
Powerful platform for creating an online blog or publication
Professional bloggers, serious enterprise publishers
on-premises — free; cloud — 29$, 79$, 199$
twitter24,1
Github stars ( open source)28,7
Open source
On-premises software
Cloud service
GraphQL API
REST API
UI
( )
( )
( , )
(, , , ?)
Read API
Ceate, update, delete API
CRUD API
API access tokens
API API access token
: Draft/Publish
Git
Webhooks
附加信息该项目源自强大的编辑工具wordpress。


结论


总的来说,我希望从无头的cms看两件事:创建模型的自由,借助它可以实现任何协议,以及git一个类似的版本控制系统,以便可以透明地管理所有更改。
我有点失望。尽管您可以使用这些系统中的大多数,但是它们有许多不利于我的缺点。当然,这并不意味着系统是坏的,仅意味着它们没有达到我的期望,而我的期望是我的问题。我会给他们发声:
  • headless cms . , , . , , , , . , , . - Cloud CMS, Cockpit Cosmic JS.
  • : , , . , - , — . , - , :
     { "oneOf": [ { "type": "number", "multipleOf": 5 }, { "type": "number", "multipleOf": 3 } ] } 

    Cockpit.
  • , . , number, 100. , maximum: 50? ? GraphCMS.
  • Git Cloud CMS Netlify CMS.

不幸的是,当我在那家上市公司工作时,我们无法使用任何这些系统。Cloud CMS最适合我们的需求,但是价格却很便宜。

结论


这就是这种分析使我认为我需要写无头cms的方式。您已经见过她;在她的例子中,有一个解决问题的演示。它称为Any JSON CMS

更新:任何JSON CMS都已成为开源解决方案,github存储库在此处

它的主要目的是在创建任意复杂的模型方面提供自由,并使用类似git的系统来控制所有更改。现在,除了我想实现的所有功能之外,它已经有了主要的“消息”。

Source: https://habr.com/ru/post/zh-CN444600/


All Articles