Обзор на headless CMS Strapi

Система управления контентом Strapi на данный момент является самой популярной на GitHub с 57 000 звезд, и ей пользуются такие компании, как IBM и Toyota. Она относится к типу headless — что это такое, зачем это нужно и в чем ее успех, раскроем в этом посте.

Обзор на headless CMS Strapi

Обычно под CMS понимается система, где вы можете изменять содержимое сайта, но также там происходят все остальные функции сайта — отрисовка фронтенда, логические операции, взаимодействие с другими системами и т. д. Старые системы управления контентом — это такие франкенштейны, которые умеют все сразу. При этом все сразу не очень хорошо.

Такой подход приносит некоторые ограничения. Выбирая такой путь, вы становитесь заложником выбранной CMS. Приходится мириться с ее ограничениями или отставаниями в каких-то направлениях. Например, WordPress использует очень старую медленную базу данных MySQL, а у «Битрикса» вообще все очень весело. И разработчики пришли к идее разделять управление контентом и прочие операции сайта. Делается это для того, чтобы можно было заменить устаревшию часть и вся система была более гибкой, независимой и безопасной. Все части общаются по REST API или GraphQL, что открывает путь для внешних интеграций. В этом и смысл концепции headless.

Сейчас современная разработка — это headless CMS и frontend framework на выбор — Next, Gatsby и т. д.

Strapi

Strapi — это headless-система управления контентом с открытым исходным кодом. Это означает, что любой разработчик может использовать ее бесплатно, а также предлагать свои решения и идеи комьюнити разработчиков. Но если нужна приоритетная поддержка или настройка в облаке, компания-разработчик оказывает услуги по этому направлению. Это обычная бизнес-схема open source.

Вот, кстати, компании, которые ей доверяют.

От стартапов до списка фортуна 500
От стартапов до списка фортуна 500

Strapi — очень гибкая система, в которой можно все менять. Вот пункты, которые мне очень нравятся.

Гибкая система редактирования коллекций

Коллекция — это сущность, которой мы хотим описать какой-то объект на нашем сайте. Это может быть запись в блоге, страница, товар, спикер, партнеры — что угодно. Создавая коллекцию, можно добавить любые поля. Список полей есть для любых нужд. Есть поля, которые позволяют ссылаться на другие объекты и делать связи между ними.

Обзор на headless CMS Strapi

Отдельно стоит отметить, что есть динамический компонент, который позволяет создавать конструктор страниц по принципу лего. Можно определять порядок блоков и их содержимое внутри одной коллекции.

Такой подход позволит защититься от дизайнерского творчества менеджера, который управляет содержимым сайта. Так как у него будут заранее определенные правильные блоки.

Вот пример описания страницы, состоящей из нескольких блоков.

Обзор на headless CMS Strapi
Обзор на headless CMS Strapi

Вот тут есть видео про это — Strapi CMS for content managers

Автосоздание бэкенда и Rest API

После сохранения сущностей автоматически создается REST API в файлах проекта, что позволяет легко дополнять его функционал. Это существенно упрощает производство сайта и очень сильно экономит время.

Отличная документация

На любой вопрос есть ответ в документации, в случае каких-то специфичных вопросов можно посмотреть GitHub.

Обзор на headless CMS Strapi

В бэкенде Node.js

Node.js значительно быстрее PHP. Вот табличка с данными с сайта, где проводят сравнение производительности языков. Более подробно тут.

Обзор на headless CMS Strapi

Во время инициализации проекта вы можете выбрать, какая база данных будет на вашем проекте и какие способы передачи данных, REST API или GraphQL. Есть плагины и возможность самим их делать. Мы разрабатываем плагин для интеграции Figma-макетов в Strapi, например.

Заключение

Strapi идеально подходит для проектов, требующих высокой гибкости при управлении контентом. Будь то корпоративные сайты, интернет-магазины, мобильные приложения или системы интернета вещей — Strapi предоставит необходимый функционал и гибкость для реализации этих задач.

Другие интересные наши работы

77
Начать дискуссию