独立 Headless CMS 创建静态网站,你有这个能力吗?

前言

现如今,前端开发和网站建设已经成为了许多人的新选择。但是,在大多数情况下,网站建设都需要涉及到所谓的“CMS(内容管理系统)”。因为这些系统可以让你拥有更好的管理和维护自己网站内容的能力。

然而,大多数 CMS 都是“全栈”的思路,也就是说,它们负责控制网站的输出,以及页面的显示和数据存储,这些都集中在一个系统中。这使得这些 CMS 的繁重成为了使用它们的主要问题之一。因此,Headless CMS 开始了“微服务”的趋势。Headless CMS 可以将它们的逻辑和管理员工具,与网站前端的设计和构建分开。它们只是提供数据。

什么是 Headless CMS?

Headless CMS 的基本思想是将数据与形式分离。这意味着管理界面和操作接口都不与网站用户界面关联,并且网站用户界面也不会向 CMS 发出请求。Headless CMS 只会提供可用的 JSON API,供静态网站、框架或其它前端显示层使用。

目前最受欢迎的 Headless CMS 包括 Contentful、Strapi 和 Prismic 等系统。使用 Headless CMS 的主要优点是:

  • 独立于技术堆栈
  • 更好的性能
  • 更好的安全性
  • 更大的可扩展性
  • 更好的开发体验

如何创建自己的 Headless CMS

在本文中,我们将探索如何创建自己的 Headless CMS,以及如何使用它来创建网站。

步骤1:安装所需工具

为了创建自己的 Headless CMS,我们需要一些工具。首先,我们需要 Node.js 和 NPM,它们将使我们能够构建和运行我们的 CMS。

确保你已经在电脑上安装了它们。安装方法非常简单。只需打开终端并输入以下命令即可。

---- --
--- --

如果上述命令都成功运行并显示版本,那么你已经安装好了这两个工具。

步骤2:安装 Strapi

在本文中,我们将使用 Strapi 来创建我们的 Headless CMS。它是一个开源的、基于 Node.js 的 CMS,可为我们提供各种用于管理网站数据的功能。

我们可以使用 NPM 安装 Strapi。只需要在终端里输入以下命令即可:

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

步骤3:创建一个新的 Strapi 项目

现在我们已经安装了 Strapi,我们可以创建一个新的 Strapi 项目。以及我们将在这个项目中创建数据模型。

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

这个命令将创建一个新的 Strapi 项目,并且在安装过程中将提供一些基本信息,例如数据库选择。你只需按照提示操作即可。

步骤4:创建模型

在 Strapi 中,模型是描述数据的方式。我们要使用它来描述我们网站的数据。在这里,我们将创建一个简单的模型,并在其中添加属性。

在这个例子中,我们将创建一个“文章”模型,它将有“标题”和“内容”属性。要创建模型,只需打开“./api/article/models/article.js”文件,输入以下代码即可:

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

步骤5:创建一个 API

现在我们已经定义了数据模型,我们需要创建一个 API 来服务这个模型。API 将与我们的前端静态站点进行通信。Strapi 的 API 创建器可让我们快速创建 API,而无需编写任何代码。

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

在这里,我们生成了一个名为“article”的 API,这个 API 将会代表我们所有的“文章”。你需要执行上面这个命令,并在提示中完成参数配置。

步骤6:添加数据

现在我们已经创建好了在新的 Headless CMS 中使用的 API,并在 API 上定义了数据模型。 下一步我们需要提供一些数据,这样我们就可以在我们的静态网站上使用 Strapi API 来获取它们了。 在我们的 Strapi 项目中,可以使用 Content-Type 页面,手动添加内容。

步骤7:创建静态站点

现在我们可以开始构建我们的静态站点了。你可以使用 React、Vue 或者 Angular 等框架来构建它。在这里,我们将使用 Create React App 来创建我们的站点。

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

这会在你的计算机上创建一个新的 React 项目。现在编辑 my-site/src/App.js 文件。这个文件是主要的站点文件。我们稍后将在这里添加 Strapi API。

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

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

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

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

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

步骤8:运行并测试

现在我们已经完成了所有工作,可以进入你的 Strapi 项目并运行它,然后转到你的 React 应用程序并启动它,以确保一切都能正常工作。

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

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

你现在应该可以访问“http://localhost:3000/”并看到一个简单的 React 网站,其中包含了由 Strapi 提供的文章数据。

总结

在本文中,我们探讨了什么是 Headless CMS,以及如何使用 Strapi 来创建我们自己的 Headless CMS。然后,我们学习了如何使用 Strapi 的 API 创建器来生成 API,并如何在我们的 React 前端站点上使用这些 API。

尽管 Strapi 是我们构建 Headless CMS 的一种方式,但事实上还有很多其他选择可供选择。无论你选择了哪种,使用 Headless CMS 可以大大增强在前端设计和构建项目的能力。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/653342887d4982a6eb6c3ca5


猜你喜欢

  • 在 Jest 中使用 Jasmine 匹配器的方法及应用场景

    Jest 是一个流行的 JavaScript 测试框架,而 Jasmine 是一个流行的 BDD(行为驱动开发)框架。在 Jest 中使用 Jasmine 匹配器可以让我们更加方便地编写测试用例。

    1 年前
  • TypeScript 支持 ES8 中的 async 和 await

    TypeScript 支持 ES8 中的 async 和 await TypeScript 是一个由微软开发并维护的开源项目,它是 JavaScript 的一个超集,为我们提供了更好的类型检查、错误提...

    1 年前
  • Angular 中服务的依赖注入探索

    在 Angular 中,依赖注入是一项非常重要的概念。它是一种设计模式,可以帮助我们轻松地管理应用程序中的各个组件、服务和依赖项。本文将探索 Angular 中服务的依赖注入,包括其实现方式、使用场景...

    1 年前
  • 《Webpack4.0 实战》

    前言 Webpack 是当前前端工程化最流行的构建工具之一,其功能非常强大,可使用各种 loader 和 plugin 优化项目构建流程,提高项目性能,以及支持热更新等许多特性。

    1 年前
  • 使用 SSE 优化 web 应用的性能

    在前端开发中,我们经常会面临着要实时更新数据的情况。传统的做法可能是通过定时器或者轮询来实现实时更新,但是这种方式会占用大量的网络带宽和服务器资源,而且实时性也无法保证。

    1 年前
  • 如何在 Babel 中使用 decorators 实现装饰器模式

    装饰器模式是一种面向对象编程中的设计模式。它可以动态地给一个对象添加一些新的功能,而不需要修改它的原有代码。在 JavaScript 中,装饰器是一些能够修改类和类内部属性或方法的函数。

    1 年前
  • ES2020 中函数的类型支持 function type syntax 详解

    随着 JavaScript 语言的发展,函数的类型支持也得到了相应的改进。ES2020 中引入了函数类型语法(function type syntax),为我们提供了一种更具表达力和类型安全性的函数定...

    1 年前
  • Express.js 用于文件上传的详细教程

    什么是 Express.js Express.js 是一款流行的 Node.js 框架,被广泛应用于 Web 应用程序和 API 的开发中。它提供了一种简单、灵活和可扩展的方式来创建 Web 应用程序...

    1 年前
  • 响应式设计中的自适应滚动条技巧

    随着移动设备的普及,响应式设计成为了设计与开发领域的热点。在响应式设计中,为了适应不同尺寸的屏幕,在一些情况下,我们需要使用自适应滚动条来提供更好的用户体验。本文将探讨如何在响应式设计中实现自适应滚动...

    1 年前
  • 解决 React Native 在不同设备之间的兼容性问题

    React Native 是一款用于构建跨平台移动应用的开源框架。但是,由于不同设备的配置和硬件差异,可能会导致一些兼容性问题。本文将介绍如何解决 React Native 在不同设备之间的兼容性问题...

    1 年前
  • Headless CMS 兼容性问题解决方案:别错过这几条建议!

    Headless Content Management System(CMS)是近年来前端开发领域内一个备受关注的话题,它可以为开发者提供更加灵活、高效的内容管理解决方案。

    1 年前
  • 如何利用 Hapi.js 打造微信公众号后台开发 - 避免微信客户端兼容性问题

    作为一名前端开发人员,我们经常需要为客户端开发微信公众号后台。而微信客户端兼容性问题一直是前端开发中的一个烦恼。今天,我们将会介绍如何利用 Hapi.js 来解决这些问题,同时提高后台的开发效率和质量...

    1 年前
  • 使用 Angular 9 结合 NgRx 构建 SPA 应用的最佳实践

    随着前端技术的不断发展,越来越多的企业开始将 SPA (Single Page Application) 作为自己网站的主要开发方式,以提供更好的用户体验和更快的页面加载速度。

    1 年前
  • 如何在 Mocha 中忽略特定测试

    在编写前端自动化测试时,Mocha 是一个常用的测试框架。有时候我们需要忽略一些测试用例,比如一些未实现的功能或者正在研发的功能。本文将介绍如何在 Mocha 中忽略特定测试用例。

    1 年前
  • Vue.js 2.x 中获取 DOM 元素的方法

    Vue.js 是一个流行的前端框架,它使得构建交互性强的单页面应用变得非常容易。然而,在 Vue.js 中,有时需要获取 DOM 元素来访问或操作它们,这就需要我们了解如何在 Vue.js 中获取 D...

    1 年前
  • 如何利用 Custom Elements 实现图片懒加载

    懒加载是现代网站以提高性能和用户体验的一种方式。许多前端框架和库都提供了懒加载的实现方式,但使用 Custom Elements 是一种原生的方法,没有依赖任何第三方库。

    1 年前
  • MongoDB 与 Redis 相结合使用实践:解决数据缓存问题

    前言 在 Web 开发中,不可避免地会遇到数据缓存的问题,尤其对于一些大型网站和应用来说,数据缓存的做法显得尤为重要。而 MongoDB 和 Redis 都是一些流行的 NoSQL 数据库,在缓存数据...

    1 年前
  • 在 Enzyme 测试中如何使用 React Test Utils

    在 Enzyme 测试中如何使用 React Test Utils 随着前端项目的复杂性不断提高,代码质量与测试成为一个重要的话题,其中测试自然是不可或缺的一个环节,而 Enzyme 是 React ...

    1 年前
  • Redis 分布式缓存功能实现指南:集群规模又增又快,如何实现分布式缓存

    Redis 是一款高性能的 Key-Value 存储系统,其支持多种数据类型,支持事务、持久化、脚本等功能,同时也是分布式缓存的首选之一。在面对集群规模又增又快的情况下,如何正确实现分布式缓存,是前端...

    1 年前
  • Serverless 模式下的全栈开发探索

    近年来,服务器无状态的 Serverless 模式已经逐渐成为了开发者们的首选,因为 Serverless 模式可以大大降低运维成本,同时也能够更加灵活的开发和部署应用程序。

    1 年前

相关推荐

    暂无文章