作为创建 CMS 驱动的应用程序的工具,KeystoneJS 和 Strapi 之间的主要区别是啥?

Posted

技术标签:

【中文标题】作为创建 CMS 驱动的应用程序的工具,KeystoneJS 和 Strapi 之间的主要区别是啥?【英文标题】:What are the key differences between KeystoneJS and Strapi as tools to create CMS-driven apps?作为创建 CMS 驱动的应用程序的工具,KeystoneJS 和 Strapi 之间的主要区别是什么? 【发布时间】:2019-01-20 09:40:53 【问题描述】:

当我想在前端使用 Vue/React/Angular SPA?既然它已经有一个模板/视图,那么 Keystone 可能会更快地获得 MVP?还要别的吗?

【问题讨论】:

【参考方案1】:

一年多以来,我一直很喜欢在多个项目中使用 KeystoneJS v5。 我和你有同样的问题,我选择了 Keystone 而不是 Strapi(即使 git 明星和社区更高),因为我正在寻找一个基于简单文件的后端生成器。

此行表示:schema => (AdminUI, GraphQLApi)

我需要快速定义(然后轻松修改)后端的信息架构,并看到它自动反映在 CMS 和 API 中。

(Strapi users, correct me if I'm wrong) 我看到 Strapi 更专注于构建一个拖放(无代码)的方式来构建这个后端。我找不到将 Strapi 与文件一起使用并获得我正在寻找的 CMS 和 API 的直接方法。在我看来,它是为需要后端但不想编写代码的人构建的。

我宁愿使用我的代码编辑器功能(查找/替换、多光标)来定义和修改我的架构,而不是浏览器上的拖放组件。还可以使用以前的项目作为我的基础代码来构建新项目。

我的 keystone 项目有一个非常简单的文件结构,其中大多数都是开箱即用的,并且制作自定义突变、AdminUI 组件、挂钩和数据播种非常简单。

这是一个例子:

├── index.js  // imports entities, hooks, initial-data, submodules
├── initial-data.js // imports seed/index.js and orchestastes how to create data 
├── entities // for each entity (list): field types, access control, hooks, adminUI configs
│   ├── index.js
│   ├── Users.js 
│   ├── Books.js
│   ├── Loans.js
│   ├── Authors.js
│   ├── ...
│   └── Categories.js
├── extendGraphqlSchema // pretty easy to add new custom Graphql types, mutations and queries  
│   ├── index.js
│   ├── types
│   ├── queries
│   └── mutations
├── hooks 
│   ├── index.js
│   ├── user_beforeUpdate.js
│   ├── book_validateInput.js
│   ├── ...
│   └── loan_afterDelete.js
├── keystone-media-server // submodule I use on many Keystone projects
│   ├── adapters
│   ├── fields
│   ├── lists
│   ├── resolvers
│   └── seed
└── seed // list of functions to create a complete data example to test
    ├── index.js
    ├── createUsers.js
    ├── createBooks.js
    ├── createLoans.js
    ├── createAuthors.js
    └── createCategories.js

【讨论】:

我们的结构有点复杂,是的,我们正在研究更好的种子选项(数据迁移也是如此)我是 Strapi 的解决方案工程师。【参考方案2】:

不熟悉 KeystoneJS,但从外观上看,它们非常相似。 Strapi 看起来有一个更可扩展的 API,但总体上是相同的概念。我已经在几个项目中使用了 Strapi,它的使用速度很快,你可以在不到一个小时的时间内将 Strapi 安装在 Heroku 上,并带有完整的架构。

两者之间的一件事是对 GraphQL 的支持,Strapi 正在大力推动涉足 GraphQL 世界,我相信为了跟上 Tipe.io 的步伐。

设置 GQL + Strapi + Nuxt / Next 非常适合创建 s-s-r 应用程序。

【讨论】:

谢谢,这很有帮助。我认为 Keystone 更倾向于我更熟悉的 REST,但我想我知道 GraphQL 如何对基于客户端的应用程序有益。我现在正在浏览 Strapi x GQL x Nuxt 教程。感谢tipe.io的提示。 (Strapi 默认设置为使用 REST,但通过 strapi install graphql 提供 GQL 插件,因此您可以在几秒钟内准备好 GQL) 绝对可以,这很好,因为您实际上不需要构建解析器,要记住的是,如果您打算将 GQL 与其他实例一起使用,则需要进行一些设置学习曲线,尤其是在您使用订阅的情况下。【参考方案3】:

在撰写本文时(该问题发布后近几年),Keystone 5 以 graphql 为导向,因此这不再是两者之间的主要区别。 Keystone 4 仍然作为 REST-first 框架进行维护。

Strapi 现在是 GQL-first 并且拥有更大的社区。​​p>

【讨论】:

“Strapi 现在是 GQL-first 并且拥有更大的社区。”您好,实际上我们首先是 REST,GraphQL 是一个可选插件,但我们正在努力使它们在功能和支持方面相等(REST 仍然要高一些,我们的管理面板只会通过 REST 与后端对话)跨度>

以上是关于作为创建 CMS 驱动的应用程序的工具,KeystoneJS 和 Strapi 之间的主要区别是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Django-CMS 工具栏已禁用

玉兰@cms.newBar

Java 数据库 (oracle) odbc 驱动程序不匹配

Magnolia CMS - 用于创建模板的模块创建技术

选择起始页 django-cms

Cube.js 作为报告工具