CMS = Content Management System 内容管理系统 是计算机系统中 web 应用最常见的形式。

CMS 的目的就是呈现“内容”。我知道由计算机组成的互联网的本质是“信息技术”,也就是信息传递的技术,那么在网络上最重要的东西其实就是“内容”。而 CMS 就是针对内容给出的一种技术解决方案,可以在一个平台中有效的管理各种各样的内容呈现。

这样的内容可以包括:音视频数据,文字数据,各种各样的文件,或是超文本的、包含多媒体内容的各种文件。

分类

CMS 系统主要由两个部分组成。供用户呈现内容的 UI 前端(一般是网站),还有后端服务,用于维护和保存数据。这两个部分的实现和部署方式决定了 CMS 系统的种类。

不同种类的 CMS 种类有:

  • 耦合 CMS,同时实现了前端和后端的系统,一旦部署在服务器上就可以直接使用,例如大名鼎鼎的 Wordpress
  • 无头 CMS,只实现了后端部分的系统,而前端则另外实现
  • SaaS CMS,已经整合在云端上的系统,用户注册登录就可以直接使用
  • 分离 CMS,前后端分离,中间利用 API 来传递数据

不同的 CMS 有不同的应用场景,根据需求挑选合适的即可。

核心功能

主要包括两大部分,四个模块:

  • 数据部分
    • 用户管理 ,所有给人用的系统都应该有用户管理功能
    • 数字资产管理,各种不同形式的文件,资料的管理
  • 呈现部分
    • 内容协作,可以让大家一起来编辑一个内容
    • 网站构建器,呈现主要是标签式的语言,例如最被广泛使用的 HTML。CMS 应该提供一种方式快速构建网站

其中数据部分对应后端,而呈现部分对应前端。

博客系统

我正在使用的博客系统其实也是一种简单的 CMS 系统,只不过用的技术更加“极客化”。就拿 Hexo 为例,每篇文章用 Markdown 书写,而 Hexo 提供了一种方法把 Markdown 内容转换为网页。博客系统有简单的静态文件管理,但只是直接把文件保存在文件系统上,内容协作则更简单,直接用 git 来完成,至于用户管理嘛,基本没有,因为博客的用户一般情况下只有一个人。

不过话说回来,搞一个博客系统确实对理解 CMS 的工作原理有不少帮助,而且能接触很多很不错的前端技术,挺适合后端工程师玩玩用用。