用 Headless CMS 搭建 React App,简单易行

阅读时长 6 分钟读完

在前端开发领域中,使用 Headless Content Management System(CMS)搭建 React App 已成为一个广受欢迎的实践。Headless CMS 旨在提供灵活性和可扩展性,同时允许前端开发人员将内容和结构从后端分离。

本文将为您介绍如何利用 Headless CMS 搭建 React App,包括以下内容:

  • Headless CMS 简介和其优势
  • 如何选择适合你项目的 Headless CMS
  • 如何将 Headless CMS 与 React 集成
  • 示例代码和其他参考资料

Headless CMS

Headless CMS 是指没有“头部”(也就是没有前端展示层)的内容管理系统。它的作用类似于传统 CMS,但可以将内容和结构从应用程序的逻辑代码中解耦出来,从而使前端更加灵活。

Headless CMS 最大的好处就是允许开发人员使用任何编程语言或者框架来构建前端,而不受限于任何特定的技术库或语言。同时,Headless CMS 还可以更加便捷地负载平衡和扩展,使得其适用于支持高流量、高可用性和可扩展性的网站和应用程序。

比起传统的 CMS,Headless CMS 还有以下优势:

  • 与现代应用程序和云环境协同工作
  • 实现了跨平台的支持
  • 更加灵活的内容部署方式
  • 由于不存在页面渲染,因此在使用 Headless CMS 时前端更容易优化

选择适合你项目的 Headless CMS

Headless CMS 提供了许多不同的选项,所以在开始构建之前要选择适合你项目的 CMS 很关键。

下面根据实际需求介绍几种不同的 Headless CMS:

Strapi

Strapi 是一个基于 Node.js 的 CMS,它的主打优势在于对多个数据库的支持以及 Building Blocks 功能(通过对 UI 繁琐的 CRUD 操作进行自动化的处理)。

Strapi 使用图形界面进行配置和部署,集成了许多丰富的插件和组件,比如自动化的 API 文档和集成式数据库管理器。

GraphCMS

GraphCMS 是一款由 GraphQL 推动的 CMS,可以通过图形界面使用户更加便捷的自定义 GraphQL 的 API 和 Schema。相比于 Strapi,GraphCMS 由于完全基于 GraphQL 进行操作,因此更适合支持复杂数据模型,特别是多语言的项目。

Contentful

Contentful 是一家可扩展的 SaaS CMS 供应商,是 Headless CMS 中相对成熟和流行的生态之一,这主要得益于它强大、美观、易于使用的编辑器和内容构建器。Contentful 还提供了 API 和图像处理,它还可以与其他常见技术紧密集成。

将 Headless CMS 与 React 集成

Headless CMS 主要是由 Content API 和 Delivery API 组成的,API 使我们能够以原始数据格式获取所需的任何数据。React 作为一种客户端框架,可以通过从 Headless CMS 中获取到数据并将其用于生成动态数据驱动的UI。

建议在 React App 中,使用 Axios 技术组件获取所需的数据。这样,可以将所有实际的 API 调用封装在单个组件文件中,让代码变得更灵活,更容易维护。

下面我们就以 Contentful 为例来演示如何将 Headless CMS 与 React 集成的基础配置

首先,你需要注册 Contentful 帐号并创建所需的内容类型。

接着,使用 NPM 在项目目录中安装以下库:

在应用程序中,创建 axios 实例并读取我们从 Contentful API 中获取的数据,如下所示:

-- -------------------- ---- -------
------ ----- ---- --------

----- ----------------- -
  ------ - --------------
    -------- ---------------------
    -------- -
      -------------- --------------------------------
      --------------- -------------------
    --
  ---

  ----------------------- ------- -
    ----- -- - ------ - ------------ - ---
    ----------- - ---------------------------- - ---------------------
    ------ -------------------------------------------------------- -- ----------------
  -
-

------ ------- --- --------------------

在这里,我们实现了一个名为 “getEntries” 的方法,用于从 Contentful API 中检索所有指定项目。

最后,如下所示在 React 组件中使用它:

-- -------------------- ---- -------
------ ------ - --------- --------- - ---- --------
------ ----------------- ---- ------------------------

------ ------- -------- -------------- -
  ----- --------- ----------- - -------------
  ------------ -- -
    --------------------------------------- ---------------------------------- -- -
      -----------------
    ---
  -- ----
  ------ -
    ----
      ------------------ -- -
        --- -------------------
          --------------------------
        -----
      ---
    -----
  --
-

在这个组件中,我们首先使用 UseEffect 来检索所有价格小于50的商品,然后使用 map() 方法将它们呈现为列表。显然,Headless CMS 和 React 很容易结合使用!

示例代码

你可以在以下的 Github 仓库中查看完整可运行的代码:

https://github.com/terlihubbard/headless-cms-react-tutorial

结论

Headless CMS 和 React 结合在一起,可以节省时间和精力,从而完成具有高度灵活性、性能良好的网站和应用程序的内容管理。

在本文中,我们向您介绍了不同的 Headless CMS,以及如何将其与 React 集成,同时给出了示例代码。我们相信这对您在设计和开发 Web 应用程序时是非常有帮助的。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67721de26d66e0f9aad4c39a

纠错
反馈