news

使用无头CMS的简单网站方法:第1部分

我坚信创新的道路需要实验,出汗和失败。如果不尝试新的解决方案,新技术和新工具,我们就限制了我们改进的能力,抓住我们的潜力做得更好,更快,更悲伤地确保我们立足于不是现有的系统,流程和技术,或者至少不是最新的。

由于这三部分博客将发现,有时候,进步就是简单,创新可以通过不过度复杂的数字解决方案的路径来实现

所以,第一部分.....

这样的任务可能会是很痛苦的,主要是因为大多数时候你会失败,而不是我认为这是一个真正的意义上的失败,但是因为你没有达到你所期望的。然而,直到你意识到失败,你已经赢得了一些东西,你提高了你的技能,你丰富了你的知识,也许在下一次你完全达到你的期望。

但是创新也可以很简单。对我来说,做一些与你使用不同的东西的简单事实已经是创新。

几年前,我在Photoshop中做了一些事情,我的一位朋友,设计师,与我一起工作,告诉我:“起来,稍微回来,你会看到你在做什么更好”。

如果你是一个开发者,它有点相同,有时候只是换一种语言,或者尝试一个不同的框架,给你一些其他的观点。

在Appnovation,我们致力于为客户提供最佳实施方式,通过及时提供,修复不工作的问题,创新并分享实验结果。这是我的文章的目的,这是一个从一个趋势概念(无头的CMS)开始,我正在评估不同的解决方案。在稍后的帖子中,我将通过提供一个利用Cockpit CMS和React的实例来添加更多细节。

无头CMS

一个无头的CMS不是一个全新的概念,但是,直到最近它才得到了一系列有趣的解决方案。它在维基百科中定义为“无头CMS是从底层构建的后端内容管理系统(CMS),作为内容存储库,使内容可以通过RESTful API访问,以便在任何设备上显示。

那么,以上与我们使用的传统CMS不同呢?基本上,无头解决方案只负责内容的架构,如何组成以及如何相关,而不是如何呈现。

一个典型的无头CMS提供了一个管理界面来定义内容结构,并创建/编辑/更新/删除相应的内容,以及一个RESTful API,用于以一种易于被应用程序使用的方式公开这些内容(例如网站,移动应用程序等)。恢复表示层被丢弃,焦点在内容上。这种方法可以为设计人员和前端开发人员带来更多的自由,因为他们不受CMS的典型限制。此外,它还提供了在不同设备之间轻松切换的能力或提供更好的用户体验。

无头CMS解决方案

有很多不同形式和口味的解决方案,开放源代码/免费或商业,自主或基于云,简单或更高级,就像突然间我们从六个已经建立的传统CMS转移到十几个新的提供商承诺摇动通常“慢适应”的CMS场景。

前段时间,像其他好奇的网页开发者一样,我决定看看那些竞争者,看看他们能干什么。我的目的主要是要对每个人有一个高层次的理解,看看他们如何处理从内容结构到编辑部分的概念以及如何使用REST客户端来使用它们的内容。

我的标准其实很简单:

  1. 项目页面的质量,文档的可用性

  2. 是免费/开源或商业,价格?

  3. 容易安装,码头图像的可用性,可以自我托管?

  4. 管理界面

  5. 如何定义内容结构

  6. 如何使用API​​来消费内容

我不会进入上述练习的细节,因为这不是本文的目的(可能是另一篇文章的内容),现在我只分析一些我分析的解决方案:

Drupal - https://www.drupal.org

那么,将Drupal作为第一个选项认为这有点明显,我使用Drupal多年来,我喜欢它,从我的角度来看,它是市场上功能最强大的开源CMS / CMF,事实上,它比大多数商业和昂贵的解决方案更好。但是Drupal不是一个无头的CMS,Drupal是一个纯粹的CMS / CMF,表示层是核心系统的一部分,不能被关闭。另外,Drupal不仅仅是API,它是API的第一个解决方案,因为Drupal的创造者Dries Buytaert在他的博客(https://dri.es/drupal-is-api-first-not-api -只要)。所以我们可以把Drupal看作是一个混合体,它可以用于解耦的应用程序,通过利用一组模块或使用Contenta(http://www.contentacms.org/)或Reservoir(https:// github.com/acquia/reservoir)。两者都很有前途,

GraphCMS - https://graphcms.com

GraphCMS是围绕GraphQL构建的第一个无头的CMS,它是由Facebook构建的一个现代和强大的数据查询语言,可以通过REST API解决一些问题,例如只返回客户端请求,不再限制有效负载,移动应用。GraphCMS自带了一个云解决方案,具有免费(但有限)的层级,安装非常简单,可以从头开始,从模板(博客或新闻页面)或通过从其他解决方案(Contentful)迁移来创建项目。管理用户界面建立在React和Material UI上,创建内容类型和字段是一个直观的过程,大部分时间都是向导/步骤的形式,但整个界面对我来说似乎有点笨重和缓慢。

内容丰富 - https://www.contentful.com

Contentful是另一种基于云计算的商业解决方案,由于价格的限制,它适合于大中型企业。一个免费的,但非常有限的版本是可用的,管理界面是非常好的构想,我们有4个主要部分,内容模型的建模内容类型,内容管理内容,媒体管理资产和API管理项目的API 。总的来说,界面简单,快速和强大,创建/更新字段使Drupal在用户体验方面黯然失色。

Directus - https://getdirectus.com  

Directus是一个完整的无头CMS,可作为开源解决方案(免费)或托管解决方案(支付)。管理用户界面是极简主义的,内容类型字段的形式是表格和列的形式,我个人不明白,当使用CMS我希望定义内容使用较少的技术概念,对我来说内容类型是代表一些由属性(例如产品名称,产品价格)组成的信息(例如页面,产品等等),因此我对它的存储位置和存储方式不感兴趣,除非我是一名开发人员。数据库表的这种方法在API调用中更像是可见的,就像检索内容时一样 - /api/1.1/tables/[table-name]/rows。

驾驶舱CMS - https://getcockpit.com

Cockpit CMS是一个小型的解决方案,是从无头开始的。它是一个人的产物大多是一个人 - 阿图尔·海因策。正如在他的网站上提到的,“简单的内容平台来管理任何结构化的内容”。这是一个基于PHP 7,Riot.js和SQLite(或MongoDB)的自托管解决方案,可以使用提供的docker映像快速安装。管理界面极简主义,但直观,创建一个新的内容类型与几个领域是可以在不到一分钟的时间内执行的东西,与其他解决方案相比,是惊人的。REST API很容易理解,使内容的检索变得容易。它可以通过使用webhooks功能进行扩展,也可以通过创建新的附加组件来实现开放源代码和自主托管解决方案。

如果我被要求选择一个解决方案,我会一如既往地要求业务场景和需求,可能会选择Drupal取决于所需的定制和项目的维度级别。但是让我们想象一下,我们不需要任何特别的东西,我们不需要复杂的编辑工作流程,我们只需要一个简单的网站,将由一些用户来管理,我们希望使用JavaScript框架来构建前端。

在这种情况下,我的决定可能是驾驶舱,我会尽力解释为什么在下一篇文章。