前言
如今,作为一名前端工程师,我们的任务就不仅仅是将 UI 样式和交互写好,还需要真正意义上的 API 和业务逻辑。这时,便需要用到 Headless CMS。Headless CMS 是一种将内容管理系统 (CMS) 分离为显示层和内容层的技术,它将会改变你的前端开发方式。
本文将分享 Headless CMS 的技术架构和实现方案分析,其中将重点介绍如何使用 Contentful 来实现我们所需的 Headless CMS。
技术架构
使用 Headless CMS 和传统 CMS 相比,主要的区别就是前者把内容层分离出去了,即将页面渲染与数据源解耦。这样,我们就可以使用任何一种语言或框架来访问数据,并进行处理和渲染,从而实现业务逻辑和 UI 的 显示,API 调用等操作。
下面是 Headless CMS 的技术架构示意图:
在 Headless CMS 中,我们可以使用任何一种前端框架来访问 API,从而获取需要的数据。这样,我们就可以根据需求来灵活选择框架和技术,让前端的开发更加高效和自由。
实现方案
选型及介绍
在 Headless CMS 中,我们需要针对业务需求来选择相应的 CMS 工具。过于重度的 CMS 工具对于 Headless CMS 来说可能会显得过度臃肿。因此,选择合适的 Headless CMS 工具对于大型Web应用程序非常重要。
目前,市面上的 Headless CMS 工具主要有以下几种:
Contentful
Contentful 提供了一个易于使用的 API,使开发者可以自定义创建和设计内容类型。它也拥有一个可自定义的可视化编辑器,可帮助修改和协作。
其主要特点还包括动态、真正的无头 (Headless) ,同时支持GraphQL。开发者可以从许多常见的语言中选择,例如:Java、Python、Ruby、PHP等等。Contentful 还提供了一个庞大的商业应用程序集成市场,包括Slack、Github、Algolia等等。
Strapi
Strapi是一个开源的 Headless CMS 工具,它是一个轻量级的工具,适合建立小型应用程序。通过 Django-style 的管理界面,用户可以查看数据、添加用户和编辑其他配置。
Prismic
Prismic 是一个完全分离的 Headless CMS 平台,拥有可定制的数据模型架构,预定义的模板和灵活的模板渲染进程。它还支持多语言和搜索功能。
Netlify CMS
Netlify 是一个针对静态网站的 CMS 工具,可在拥有随时可用的极速全球 CDN 的服务器上完成“一键发布”。它还可以与Gitlab、Github一起使用,并提供单个入口点,让您可以管理静态和动态内容并绑定可扩展的 APIs。
Contentful 实现方案
- 注册 Contentful
Contentful 官网上有免费版可以注册,注册完毕之后,可以看到空白主界面。在首页,我们可以选择使用空间或者创建新空间,或者创建一个你的第一个内容类型。在这里,我选择了一个新的空间,以实现 Headless CMS 的第一个演示。
- 创建内容类型
在 Contentful 界面上,我们可以创建和管理内容。因为它是一个 Headless CMS 工具,所以所有数据都是通过 API 调用的方式获得的。
在 Contentful 创建一个内容类型,就等于创建一个数据模型,我们可以指定数据类型、字段名称、类型、标签等信息。
- 获取 API 密钥
在 Contentful 应用程序的“设置”或“管理”页面中,可以找到一个 API 密钥。这个密钥将被用来在前端代码中授权发起 API 请求。
- 进行 API 调用
在前端代码中,我们可以使用 axios 或者是 fetch 等工具发起 API 请求,调用 Contentful 的数据。API 接口可以在 Contentful 官网上找到,并根据根据自己的请求需求进行二次封装,具体如下:
const API_URL = `https://cdn.contentful.com/spaces/${SPACE_ID}/environments/master/entries?access_token=${ACCESS_TOKEN}` async function getEntries () { const response = await axios.get(API_URL) return response.data }
总结
Headless CMS 是一种非常强大及有用的工具,可以帮助开发者更加高效地开发应用程序。使用 Headless CMS 的技术架构和实现方案已经在不断地发展和变化中,而 Contentful 作为较为成熟的 Headless CMS 工具之一,在实现方案中的数步骤与使用上比较易于操作,是推荐的一种方案。
当然,选择 Headless CMS 工具需要根据各自的项目需求来考虑。只有选择了适合自己的工具,才能让我们更加高效、便捷地完成开发任务。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e7629df6b2d6eab32f37d7