В чем основные различия между KeystoneJS и Strapi как инструментами для создания приложений на основе CMS?

Я склоняюсь к идее, что я бы использовал Keystone (как есть) для стандартного серверного многостраничного приложения и strapi, когда я хочу прикрепить Vue / React / Angular к интерфейсу для SPA? Поскольку у него уже есть шаблон / представление, Keystone может быстрее добраться до MVP? Что-нибудь еще?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
11
0
3 824
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Не знаком с KeystoneJS, но внешне они очень похожи. Strapi выглядит так, как будто у него более расширяемый API, но в целом его концепция та же. Я использовал Strapi для нескольких проектов, и с ним быстро работать, вы можете установить Strapi на Heroku с полностью построенной схемой менее чем за час.

Одно между ними - поддержка GraphQL, Strapi делает значительный рывок, чтобы участвовать в мире GraphQL, я считаю, чтобы не отставать от Tipe.io.

Настройка GQL + Strapi + Nuxt / Next прекрасно подходит для создания приложения SSR.

Спасибо, это полезно. Я думаю, что Keystone больше привязан к REST, с которым я более знаком, но я думаю, что понимаю, как GraphQL полезен для клиентских приложений. Я сейчас прохожу через учебник по Strapi x GQL x Nuxt. И спасибо за подсказку re tipe.io.

Charles Thomas Ingles 16.08.2018 20:19

(Strapi по умолчанию настроен на работу с REST, но предлагает плагин GQL через strapi install graphql, так что вы готовы к GQL за секунды)

Charles Thomas Ingles 16.08.2018 20:33

Совершенно верно, и это приятно, потому что вам действительно не нужно создавать резолверы, нужно иметь в виду, что если вы планируете использовать GQL с другими экземплярами, кривая обучения настройке немного сложнее, особенно если вы используете Подписки.

Daniel Ryan Snell 21.08.2018 08:06

На момент написания этой статьи (почти через пару лет после публикации этого вопроса) Keystone 5 ориентирован на graphql, так что это уже не главное различие между ними. Keystone 4 все еще поддерживается как REST-first framework.

Strapi теперь ориентирован на GQL и имеет более широкое сообщество.

«Strapi теперь ориентирован на GQL и имеет более широкое сообщество». Здравствуйте, на самом деле мы сначала REST, а GraphQL - это дополнительный плагин, но мы работаем над тем, чтобы сделать их равными с точки зрения функций и поддержки (REST все еще немного выше, и наша панель администратора будет общаться только с серверной частью через REST)

Derrick Mehaffy 16.11.2020 21:32
Ответ принят как подходящий

Мне нравится работать с KeystoneJS v5 более года над несколькими проектами. У меня был тот же вопрос, что и у нас, и я выбрал Keystone вместо Strapi (даже когда звезды и сообщество git были выше), потому что я искал простой файловый Backend Generator.

Эта строка выражает это: 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.

Derrick Mehaffy 16.11.2020 21:32

Другие вопросы по теме