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





Не знаком с KeystoneJS, но внешне они очень похожи. Strapi выглядит так, как будто у него более расширяемый API, но в целом его концепция та же. Я использовал Strapi для нескольких проектов, и с ним быстро работать, вы можете установить Strapi на Heroku с полностью построенной схемой менее чем за час.
Одно между ними - поддержка GraphQL, Strapi делает значительный рывок, чтобы участвовать в мире GraphQL, я считаю, чтобы не отставать от Tipe.io.
Настройка GQL + Strapi + Nuxt / Next прекрасно подходит для создания приложения SSR.
(Strapi по умолчанию настроен на работу с REST, но предлагает плагин GQL через strapi install graphql, так что вы готовы к GQL за секунды)
Совершенно верно, и это приятно, потому что вам действительно не нужно создавать резолверы, нужно иметь в виду, что если вы планируете использовать GQL с другими экземплярами, кривая обучения настройке немного сложнее, особенно если вы используете Подписки.
На момент написания этой статьи (почти через пару лет после публикации этого вопроса) Keystone 5 ориентирован на graphql, так что это уже не главное различие между ними. Keystone 4 все еще поддерживается как REST-first framework.
Strapi теперь ориентирован на GQL и имеет более широкое сообщество.
«Strapi теперь ориентирован на GQL и имеет более широкое сообщество». Здравствуйте, на самом деле мы сначала REST, а GraphQL - это дополнительный плагин, но мы работаем над тем, чтобы сделать их равными с точки зрения функций и поддержки (REST все еще немного выше, и наша панель администратора будет общаться только с серверной частью через REST)
Мне нравится работать с 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.
Спасибо, это полезно. Я думаю, что Keystone больше привязан к REST, с которым я более знаком, но я думаю, что понимаю, как GraphQL полезен для клиентских приложений. Я сейчас прохожу через учебник по Strapi x GQL x Nuxt. И спасибо за подсказку re tipe.io.