无头 CMS 和 Jamstack 新手指南
作为一名 Web 开发人员,我一直在寻找最新、最好的方法来改善我的工作流程并提供优质的产品。
当我刚开始自由职业时,我依靠 WordPress 作为安全、可靠的选择,为需要内容管理系统 (CMS) 来处理博客或作品集的客户提供服务。
到目前为止,我一直在使用 HTML、CSS 和原始 JavaScript,而使用 WP 进行基本的 PHP 开发并不太难。
但是当我开始使用 WordPress 时,我也同时开始学习 React。
两者之间的差别就像白天和黑夜一样。
PHP 和 JSX/JavaScript 以类似的方式解决将逻辑插入标记的问题。
但是从“开发人员体验”的角度来看,一旦我掌握了现代 JS 开发环境和基于 React 的组件构建,我就再也无法忍受回到单片 index.html/php/css 文件的想法了。
甚至不要跟我谈论 XAMPP/Apache/MySQL!!!
我知道一定有一种方法可以满足我的客户的需求,同时让我能够使用最新的工具。
无头现在怎么办?
我曾在 Twitter 上密切关注有关无头 CMS 和 Jamstack 的讨论,但却无法理解其中的大部分内容。
不久前,如果你问我关于无头 CMS 的问题:
“这就像是一种与 WordPress 不同的 CMS 实现方式。我觉得吧?它就像 WordPress 的管理面板部分,你可以通过 API 将其连接到你的前端,然后根据你的需要进行构建。但是,这家伙正在跟我讨论无头 WordPress,所以……?”
事实上,回想起来,这并不是一个糟糕的理解。
但是,除了 JavaScript 比 PHP 更酷之外,为什么还要选择无头 CMS?(Laravel 开发人员,不要@我)
为什么不坚持使用久经考验的一体化 WordPress CMS?为了达到同样的目标,无头系统似乎需要做更多工作,不是吗?
为了更好地理解无头 CMS 的优点,首先我们需要清楚地了解“传统” CMS 的工作原理。
传统 CMS:WordPress
(还有其他的,但实际上,WP 是这个领域无可争议的冠军)
首先,我想说,尽管 WordPress 饱受诟病,但它依然有效。
它没有坏,也不需要修理!
如果 WordPress 满足您的需求,请务必坚持使用它。
使用像 WordPress 这样的传统 CMS,您的前端、后端和充满内容的数据库都会作为服务器上的一个复杂单元共存。
它们密不可分地联系在一起,因此如果您想对其中任何一层进行实质性更改,通常必须从头开始重建整个内容。
由于 WordPress 是一种“一刀切”的选择,作为一名开发人员,您有时会发现自己在构建内容方面受到平台的支配,无论是受到专有工具的限制,还是因不必要的、未使用的膨胀而感到沮丧。
由于 WP 是用 PHP 构建的,每次客户端访问时都需要服务器进行大量的工作。这可能会降低速度(但最终可能无关紧要),而且对于网站的目的而言,这或许并非必要——一个永远不会改变的页面(例如“关于我们”页面)就不需要每次访问时都由服务器进行渲染。
无头CMS
Prismic、Ghost、Strapi、Forestry 等。
当你使用无头系统时,最大的变化是你的前端、后端和数据库都作为独立的实体存在。
Jamstackers 将其描述为将“表示层”(前端)与“逻辑/数据层”(后端和数据库)分离。
如果你熟悉 WordPress 的管理面板,大多数无头 CMS 的外观和使用体验都很像。而且理由很充分:就像我说的,它没问题!没必要再重新发明轮子了。
但是你的前端和 CMS 不再是永久绑定在一起的,它们需要一种相互通信的方式。这可以通过 API 来实现。
对于开发人员和内容创建者来说,解耦意味着:
自由!!
现在,您可以有无数种方法来构建和配置谜题的每个元素。而且它们彼此独立运作,这意味着开发团队和内容团队都可以专注于自己最擅长的领域,而不会互相干扰。
如果您需要进行重大更改 - 比如说您重建前端,或者您需要扩大 CMS 以满足不断增长的流量 - 您可以这样做而无需中断任何其他活动部件。
最重要的是,根据您的需求:
您通常可以免费、无限期地部署功能齐全的 Jamstack 网站——无需托管费用。
从自由开发人员的角度来看,能够向客户推销一旦他们做出改变就不再需要支付托管费用,这有多酷?!
(如果他们的免费带宽超出了分配的范围,许多提供商都会提供温和的定价层来扩大规模。)
“好吧,听起来很酷。但这到底是怎么实现的呢?”
进入 Jamstack
如果您知道 JAM 是JavaScript + API + Markup的首字母缩写词,这将变得更有意义。
在这个模型中,你可以通过自己选择的库/框架,享受现代基于组件的JavaScript范式的所有优势。 (注意:J 代表 JS,但任何能够渲染前端的语言/库/框架都可以。)
数据(您网站的内容)通过API输入——在本例中,API 指的是我们的无头 CMS。对于外部托管选项,有时这被称为CaaS: “内容即服务”。
与基于 PHP 的设置不同,PHP 需要客户端多次调用服务器端才能渲染页面,而 Jamstackers 则喜欢使用静态站点生成器,例如 Gatsby、Next.js 和 Eleventy(我个人最喜欢的)。这些框架允许您创建所有渲染都在构建时完成的站点,因此客户端会获得一个闪电般快速的静态页面,而无需与服务器交互。这是我们 JAM 中的标记。
最后一部分 - 最小静态构建 - 是 Jamstack 网站托管成本低且通常免费的一个重要原因。
“表示层”——客户端访问网站时调用的部分——占用的服务器空间非常小,以至于就带宽需求而言基本上无关紧要。
Jamstack 模型的主要卖点之一是它高度分布,因此它不是由单个主机提供整个服务,而是依赖于多个分散的来源汇集在一起——每个来源都可以根据需要进行配置、定制、扩大/缩小或更换。
(Netlify、Vercel和Heroku是免费托管和部署领域的一些知名品牌。)
你应该使用无头模式吗?
显然我无法为您回答这个问题——这取决于您、您的团队以及项目/客户的需求。
就像我说的:如果你需要一个能用的东西, WordPress 是一个绝佳的解决方案。别让那些讨厌你的人影响你。
但如果您打算冒险一试,以下是一些需要考虑的主要问题:
优点
- 解耦意味着开发和内容创作团队拥有更大的自主权
- 大多数开发者都会同意,现代 JS 生态系统能够提供最佳的开发者体验
- 您有大量服务可供选择,而且它们提供的服务种类繁多
- 它具有面向未来的特性,这意味着将来如果需要的话,可以更轻松地跳转到新服务或构建新的表示层
- CaaS 使您的内容可重复使用,这意味着它可以轻松地传递到多个接触点,并以不同的方式从单个 CMS 源呈现
- 托管通常是免费的/非常便宜的,并且 CaaS 提供商通常可以根据需要相对轻松地进行扩展
缺点
- 现在,您需要依赖多个第三方服务,而不是单一主机来交付您的网站/应用程序,这意味着出现问题的可能性会更大
- 也许它并不比设置 WordPress 网站更费力,但需要处理和配置的部件更多,这可能会让人不知所措
- 您有大量服务可供选择,而且它们提供的服务种类繁多(这既是优点也是缺点,但我将其添加到“缺点”中,因为这意味着它可能需要大量的研究和反复试验才能找到最适合您项目的选项)
- 由于您受制于新的 CaaS 主宰者来存储和交付您的内容,您将不得不忍受政策/功能/定价的变化,这些变化可能会在短时间内对您的整个系统造成影响
- 将来从您选择的无头 CMS 迁移出来可能并不像您想象/希望的那么容易
总结
WordPress 是一款久经考验的传统 CMS,几乎可以处理任何你交给它的内容。显然,它占据了互联网大部分份额,这并非它的唯一原因。
也就是说,如果您正在寻求卓越的开发人员体验和更大的灵活性,我认为与无头 CMS 分离是最好的选择。
值得注意的是,我在这里主要描述的是云托管服务。一些无头 CMS 选项(例如 Ghost 和Strapi)是自托管的,让您可以更好地控制内容的管理和交付方式(以及交付位置)。对于某些应用程序来说,这可能是更好的选择。
另外:没错,无头 WordPress 确实存在。本质上,它能带来解耦的所有好处,同时还能保留 wp-admin 面板。我听说 WP 的 API 是目前最好的之一!值得考虑。
希望这篇入门指南能帮助您更好地理解这个颇为深奥的话题。如果您有任何疑问,或者只是想批评我理解上的一些错误,请随时联系我们!