架构
架构CMS 无关性设计

CMS 无关性设计

Gato GraphQL 所基于的底层 GraphQL 服务器采用 CMS 无关性设计,可与任何 PHP CMS 或框架配合使用(不仅限于 WordPress,还支持 Laravel 和 Symfony)。

为了实现 CMS 无关性,所有需要与 CMS 交互的功能被划分为两个独立的软件包:

  • CMS 无关包:包含所有业务代码以及与实现该功能的 CMS(无论是哪种)进行交互的契约(例如:posts
  • CMS 专属包:包含针对特定 CMS 的契约实现(例如:posts-wp,实现了针对 WordPress 的契约)

因此,大部分代码(约 90%)位于 CMS 无关包中。若要将 API 移植到其他 CMS(例如从 WordPress 迁移到 Laravel),只需实现 CMS 专属包即可(约占总代码量的 10%)。

尽量减少需要重新实现的代码量,以及避免各包之间出现重复代码,是决定如何将代码拆分为各个包的主要原则。

Next