В 1865 году британский журналист Томас Майн Рид написал роман "Всадник без головы", который послужит нам отправной точкой в вопросе о том, что же такое "безголовая" CMS и какие из них представлены сейчас на рынке веб-разработки.

Давайте разбираться. А для начала вспомним сюжет романа, немного переписав его под нашу тему.

События происходят в 2010-х годах в Интернете. Луиза, дочь богатого заказчика Пойндекстера, хозяина строящейся веб-платформы Каса-дель-Корво, влюбилась в бедного веб-разработчика Мориса Джеральда. В ночь, когда произошла их тайная встреча ради деплоя отцовского сайта, на продакшене поплыла вёрстка её брата Генри. Подозрение в криворукости падает на Джеральда, которого нашли невыспавшимся, со следами вставки своей бизнес-логики в выверенный шаблон Генри. Отставной фрилансер Кассий Колхаун, кто как раз и навязал команде монолитную CMS, призывает наказать Джеральда и отдать Луизу вместе с должностью веб-разработчика ему. Ещё минута, и разъярённые члены команды линчевали бы Джеральда, но тут появляется тимлид Зеб Стумп с таинственной CMS без головы и показывает, где скрыта отгадка.

Эта интерпретация сюжета хорошо демонстрирует одну проблему, появившуюся у сайтостроительных команд лет 15 назад. Результатом её решения и стало рождение нового вида CMS. Чтобы точнее понять проблему, давайте откатимся по истории веб-разработки немного назад.

Ранний интернет

Веб 1.0, расцветший на рубеже ранних 1990-х годов, характеризовался созданием простых статических сайтов. Основным средством формирования контента на страницах был скриптовый язык Server Side Includes (SSI). Он позволял динамически собирать страницу на серверной стороне из статических HTML-фрагментов. А внешний вид контента определялся языком стилевых правил Cascade Style Sheets, предназначенным для обработки на клиентской стороне.

Затем в конце этого же десятилетия в сайтостроении происходит небольшая революция, связанная с появлением сразу нескольких инноваций.

Во-первых, это объектная модель документа (DOM), ознаменовавшая наступление эры динамического HTML через тот факт, что объектная модель открыла разработчикам способ напрямую обращаться с клиентской стороны сайта к любому элементу на странице с целью либо прочитать, либо изменить, либо удалить этот элемент.

Вдобавок к тому, динамический HTML, использующий набор техник AJAX, означающий асинхронные запросы к сайту с помощью языка программирования JavaScript и получение ответов в виде XML-пакетов данных, стал ещё одним революционным явлением в разработке. AJAX считали клиентской бизнес-логикой, так как его методы способны были работать только в момент, когда тело страницы загрузилось в браузер пользователя.

Во-вторых, появились такие технологии серверной стороны как Active Server Pages (ASP), JavaServer Pages (JSP), Personal Home Pages (PHP). Они позволяли не просто собирать страницу из фрагментов HTML-статики, но ещё с помощью соответствующего языка программирования выполнять внутри этой статики какие-то динамические действия. Такие действия стали называть серверной бизнес-логикой страницы.

Примеры первых CMS

Упомянутая революция обеспечила веб-разработчиков возможностью создавать системы управления с целью упростить администраторам работу по наполнению сайта и управлению его содержимым.

В те годы стали появлялись CMS под разные аудитории и спрос. Вот вам пример одного из пионеров-первопроходцев:

  • StoryBuilder - довольно неплохой по тем меркам инструмент публикации новостей в интернете, созданный в 1996 году компанией Vignette Corp из города Остин, штат Техас, США.

Вот для примера некоторые корпоративные системы тех лет:

  • Documentum - создана в 1996 году, использовалась для хранения в интернете корпоративных документов, отслеживания и управления огромными объёмами файлов и данных о соответствии нормативным требованиям. Ныне находится под управлением компании OpenText.

  • EPiServer - созданный в Швеции в 1997 году контентный сайт-сервер на основе платформы Microsoft .NET. После ребрендинга в 2021 году эта система управления стала называться Optimizely CMS.

  • FatWire - создана Марком Фасциано, Ари Каном и Джоном Муркоттом в 1996 году. Представляла собой CMS с расширенными возможностями персонализации для пользователей, целевым таргетированием контента и аналитикой. Ныне интегрирована непосредственно в стек Oracle в виде Oracle WebCenter Sites.

  • Interwoven - создана в 1995 году, позже названа TeamSite. Была на тот момент яростным конкурентом CMS от упоминавшейся выше компании Vignette и заслужила репутацию стандарта для рабочих процессов управления веб-контентом и контроля версий в корпоративной среде. Ныне находится под управлением компании OpenText и называется теперь OpenText Web CMS.

Такие системы представляли собой монолитные CMS, где компонент управления и компонент доставки контента были намертво вшиты внутрь системы. Один компонент извлекал из базы данных запрошенную информацию, а второй - оборачивал данные в некоторую наперёд заданную разметку. Как правило, это была HTML-разметка. И далее система отправляла получившийся результат пользователю.

Вот это оборачивание данных в некую разметку назвали позже шаблонизацией, а сами макеты разметок - файлами шаблона. Ну а группу таких файлов, макетирующих вид каждого типа страниц, назвали соответственно темой (шаблоном) сайта. Поскольку тема имела отношение к внешнему виду, некоторые администраторы сайтов называли её более понятно для себя - дизайном.

Поздний интернет

Веб 2.0, пришедший на рубеже веков, характеризовался созданием уже сайтов, опирающихся на динамическую доставку контента. Её называли загрузкой страницы без перезагрузки. Это улучшало пользовательский опыт и быстроту отклика сайта за счёт того, что с него подтягивалась не вся разметка целевой страницы, а только часть, изменившаяся относительно текущей страницы.

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

Вдобавок новое поколение CMS из-за желания стать ещё привлекательней для потребителя обзавелось поддержкой сменных тем. Этот писк тогдашней моды означал, что на сайте могло присутствовать 2 или более свёрстанных дизайнов (как уже говорилось выше, в программистской среде их называли шаблонами), а пользователь мог произвольно выбрать понравившийся прямо с клиентской стороны сайта.

Теперь компонент доставки контента был всё ещё так же намертво зашит внутрь CMS, но уже имел при себе некую "голову" в виде шаблонизатора, которая согласно выбору темы пользователем и руководила процессом, в какую именно разметку будет обёрнут доставляемый контент. И этот руководящий компонент нравился далеко не всем.

Недовольство коллег

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

Верстальщики и веб-разработчики нередко конфликтовали, потому что всем членам команды не нравилось, когда коллега поневоле залезает на его вылизанную территорию. Скажем, воображаемому разработчику Морису Джеральду, хорошо разбиравшемуся в бизнес-логике серверной стороны, но не такому искусному мастеру в делах HTML-разметки как верстальщик Генри Пойндекстер, всё же требовалось расставить там теги вывода своих результатов.

А если вы хоть раз вникали в тонкости современной HTML-разметки, то можете себе представить, как запросто способна поплыть страница сайта, залезь туда веб-разработчик неопытной рукой.

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

Безголовое решение

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

С одной стороны это была череда протоколов и архитектурных стилей взаимодействия (MVC, JSON-RPC, SOAP, WSDL, REST и тому подобные), сместивших акцент серверной разработки в сторону веб-сервисов. То есть зародилась идея, что сайт может быть не просто классическим набором страниц, а некой точкой стыковки (endpoint), из которой мы просто подтягиваем нужные данные, и не более того.

С другой стороны - уход от практики AJAX-запросов к более удобному текстовому формату обмена данными JavaScript Object Notation и нативному яваскриптовому интерфейсу Fetch API. Это сместило акцент разработки на клиентской стороне в сторону иных способов шаблонизации. То есть зародилась мысль, что шаблонизатор страниц вовсе не обязан быть или исполняться прямо на сервере сайта.

Обе эти идеи привели к осознанию, что из монолитной CMS можно отрубить вот ту "голову", тот бесполезный теперь компонент, что управлял на серверной стороне процессом оборачивания результирующих данных в шаблонную разметку. И передать эту задачу на клиентскую сторону непосредственно разработчику сайта. А от CMS требовать лишь стать неким подобием интернет-диска, обеспечивающего доступ к нужным нам сведениям. Ну и для удобства администрирования, неплохо прикрутить бы к такому "диску" некоторую админпанель.

Вот такие системы управления контентом и стали называться Headless CMS. Они представляли собой центральное звено, вокруг которого по множеству направлений располагались сайты-фронтенды, мобильные приложения или иные получатели контента, куда и уходила запрошенная информация в формате JSON.

Справедливости ради следует сказать, что большинство монолитных CMS можно превратить в Headless, достаточно откинуть от их клиентской стороны встроенный шаблонизатор и прописать внутри движка обработку собственного API для прямых запросов к базе данных. И, кстати, некоторые монолитные движки имеют такую реализацию headless-режима уже прямо из коробки, о чём ещё упомянем чуть ниже.

А разница с настоящими Headless CMS будет лишь в том, что монолитные заточены под своё строение базы данных и практически не содержат инструментов для её переделки, в то время как настоящая Headless подразумевает любое произвольное строение базы и, соответственно, админка там содержит более гибкий редактор контента, чем в монолитной.

Теперь давайте перейдём к рассмотрению безголовых CMS, доступных сейчас в интернете. Мы выберем только open-source системы, выделив тройке из самых популярных отдельные разделы статьи, остальных же сгруппируем в общие разделы по категориям и перечислим короче. А в конце добавим для полноты картины раздел с перечислением примерных замен на основе монолитных CMS и ещё раздел, где перечислим Headless фреймворки на случай, если не хотите брать готовую CMS, а надо разработать своё решение с самого начала.

StrAPI

Сайт проекта

Этот проект написан полностью на языке программирования JavaScript. Позиционируется как фреймворк нового поколения для API-ориентированных веб-серверов на основе Node.js.

Интересно, что StrAPI был основан на коде проекта Koa.js, автором которого являлась та же команда, что разработала фреймворк Express.js, опиравшийся на архитектуру MVC.

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

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

Ещё из коробки фреймворк имеет встроенную админпанель для редактирования любых данных в базе. Плюс реализованы функции управления пользователями, группами и правами доступа.

Также в ядро StrAPI предустановлен полноценный ORM/ODM, который обеспечивает уровень абстракции, позволяющий манипулировать многими базами данных: MongoDB, MySQL, Redis, SQLite и другие.

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

Правда, некоторая часть интеграций сделана, скорее, для рекламной кучи, чем имеет практическую ценность. Так, например, раздел Headless Commerce содержит такие известные названия как OpenCart, WooCommerce, Magento, Shopify и прочие. Сложно представить себе, что кому-то из разработчиков под эти CMS захочется отрезать родные компоненты движка, только чтобы прикрутить туда неродные от StrAPI.

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

DirectUs

Сайт проекта

Этот проект позиционировался изначально как бесплатный фреймворк управления контентом с открытым исходным кодом. Был написан на языке программирования PHP. Предоставлял многофункциональную среду для быстрой разработки и управления пользовательскими решениями на основе баз данных.

Авторы прежде всего отмечали легковесность фреймворка, а именно что в нём было всего 99 файлов/папок, а также его защищённость от SQL-инъекций благодаря доступу к базе данных с помощью параметризованных PDO-запросов, наличию полного резервного копирования базы, восстановлению истории изменений и виртуальному удалению данных, то есть отсутствию фактического удаления.

В комплект к фреймворку прилагалась ещё и DirectUs CMS, содержавшая сначала небольшое количество функций редактирования данных, но достаточно мощных, чтобы пользователь не искал плагины расширения на стороне.

Для серверной стороны DirectUs требовал такую конфигурацию: сервер Apache, модуль преобразования адресов Mod_Rewrite, язык программирования PHP 5.5+, база данных MySQL 5.2+, драйвер базы PDO_MySQL, библиотека запросов CURL, библиотека графики GD, и опционально: библиотеки mcrypt и Imagick.

Для разработки клиентской стороны применялись эти инструменты: библиотека MVP-проектирования Backbone.js, библиотека служебных утилит Underscore, загрузчик зависимостей Require.js, слой абстракции к базе фреймворка разработки Zend Framework (Zend DB Only), библиотека декларативных компонентов Slim, шаблонизатор Handlebars, библиотека DOM-взаимодействий jQuery, библиотека работы с датами Moment.js, библиотека drag-and-drop взаимодействий Sortable.js, библиотека веб-уведомлений Noty и динамический язык описания стилей LESS.

В ноябре 2018 года проект переезжает на новый домен, где разделяется на 3 линейки продукции: безголовый движок DirectUs App, контентный интерфейс DirectUs API, набор разработчика DirectUs SDK и 1 сервис: облачную базу DirectUs Cloud.

Примерно в то же время в дорожной карте проекта появляются планы портировать новую версию DirectUs 9 на Laravel, но потом её всё же собрали на другом стеке: язык программирования TypeScript на стороне веб-сервера Node.js и фреймворк Vue.js для программирования клиентской стороны.

На текущий момент DirectUs имеет интеграции со следующими стеками: Next.js, Nuxt, Astro, SvelteKit, React, Angular, Laravel, Django, Flask, Spring Boot, Flutter, iOS Swift, Android Kotlin, Eleventy, SolidStart. Все они представлены не как конкретное решение, а как многостраничное руководство по самостоятельной реализации вами каждой детали интеграционного процесса.

Payload CMS

Сайт проекта

Это очень популярная безголовая CMS с открытым исходным кодом, а также по совместительству и фреймворк для разработки приложений. Созданный специально для современных стеков языка программирования JavaScript - в частности, для языка TypeScript и фреймворка Next.js - он позволяет определять схемы контента полностью в коде, предоставляя программисту полный контроль над данными, API и административным интерфейсом.

Вот основные качества этой системы управления:

  • Архитектура "код важнее", означающая, что вместо какого-нибудь визуального интерфейса редактирования базы данных вам предложено определить её структуру программно с помощью языка программирования TypeScript.

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

  • Payload поддерживает нативную интеграцию с другим фреймворком разработки - это Next.js, что позволяет вам легко задействовать такие элементы, как серверные компоненты React Server и маршрутизатор приложений Next.js.

  • Система предоставляет уникальный локальный API, обеспечивающий прямой доступ к базе данных без накладных расходов, типичных для HTTP-запросов. Это позволяет выполнять запросы к базе данных с использованием TypeScript непосредственно на вашем сервере или изнутри компонентов React Server.

  • CMS разработана для самостоятельного размещения вами на собственной инфраструктуре или же для беспроблемного развёртывания в бессерверных средах, таких как Vercel или Cloudflare. Это гарантирует вам полное право собственности и контроль над вашими данными.

  • Payload имеет отличную расширяемость и из коробки предлагает богатый функционал. CMS обладает мощными встроенными функциями, включая детальный контроль доступа на основе ролей, глубокую локализацию на уровне полей для глобального расширения и встроенный инструмент управления цифровыми активами (DAM).

Генерирующие системы

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

Вот эти участники:

  • Decap CMS (ранее Netlify CMS) - одновременно и CMS безголового типа и одностраничное приложение, написанное на языке программирования TypeScript и фреймворке реактивного взаимодействия React.js.

    Скрипт Netlify работал ранее как страница, которая находится в вашем репозитории. Его идея заключалась в том, чтобы дать пользователю, не обладающему техническими навыками, простой способ обновления контента на своём сайте посредством его повторной перегенерации в виде статического после проведённых там изменений.

    После ребрендинга автор отошёл от идеи чисто скрипта генерации и там уже обозначились черты настоящей безголовой системы управления контентом.

  • Jekyll Admin - это плагин, предоставляющий пользователям CMS-подобную редакторскую оболочку для создания и администрирования контента в генераторе сайтов Jekyll.

    Проект состоит из двух частей: программного HTTP интерфейса на базе языка программирования Ruby, отвечающего за взаимодействие с Jekyll и его файловой системой, и фронтенда на JavaScript, построенного поверх этого API-интерфейса.

  • Prose - это простая среда, используемая генератором сайтов Jekyll, и предназначенная для редактирования контента статических сайтов, хостящихся на GitHub.

  • Hexo Admin - это плагин, разработанный Джаредом Форсайтом (Jared Forsyth) из города Сент-Луис, штат Миссури, США, для блогового фреймворка Hexo, имеющего собственный API для headless-взаимодействия.

    Данный проект основан на интерфейсе проекта Ghost и вдохновлён платформой публикаций Svbtle и упоминавшимся выше проектом Prose.

  • Coisas - это безголовая CMS на языке программирования JavaScript, созданная разработчиком из региона Карири-Осидентал, штат Параиба, Бразилия. Предназначена для редактирования файлов, размещённых в репозитории GitHub.

    Она схожа по принципу с такими проектами, как например Netlify CMS или Prose. Но в отличие от существующих аналогов, Coisas не претендует на роль универсальной системы, не пытается имитировать их навороченность и вообще не ориентирована на взаимодействие именно с генератором Jekyll, как те системы.

Здесь приведён не полный список, так как количество генераторов сайтов исчисляется десятками, о каждом можно рассказывать долго.

Экзотические системы

В данной категории представлен всего один участник, зато какой, и дело вовсе не в его обманчивом названии, а скорее в неожиданном подходе к управлению контентом.

Google Drive CMS - данный проект был разработан Максом Барри (Max Barry) из Лондона, Великобритания. Реализация же этой странной CMS появилась в мае 2016 года.

Наверняка она понравится тем, кто много редактирует Excel-подобные таблицы, кто привык к интеграциям, реализованным с помощью скрипта, встроенного в таблицу. В случае этой CMS такой скрипт тоже имеется, и представлен он небольшим пользовательским меню "Google Drive CMS" в шапке таблицы.

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

В результате такого поиска Макс нашёл нестандартный способ управления контентом веб-сайта с помощью Google Drive. При использовании его подхода вы сможете редактировать контент прямо в электронной таблице сервиса Google Spreadsheet, а затем отправить содержимое на свой сайт или в некоторый вспомогательный сервис (например, базу данных Firebase) посредством POST/PUT-запроса к указанному вами API.

При интеграции Google Drive CMS с вашим сайтом подразумевается, что вы либо умеете хорошо программировать API-интерфейс и разработаете его сами, либо что он уже запрограммирован на сайте.

На главной странице репозитория проекта Макс разместил инструкцию, объясняющую, как всё это работает, и приложил пример демонстрационной Google-таблицы для простого блога, отправляющей содержащийся там контент в некую конечную точку https://myapp.firebaseio.com/blogs.json облачной базы Firebase. Это лишь пример, так что конечной точкой мог быть даже URL программного интерфейса на вашем сайте.

Вообще говоря, способ очень непривычный, и чтобы понять предложенный Максом принцип, надо вдумчиво пройти по кратким шагам на официальном сайте проекта.

Кстати, автор написал, что у него более нет времени на поддержку проекта, и рекомендует использовать теперь альтернативы, решающие аналогичную задачу по управлению контентом, правда, уже без использования Excel-подобных таблиц:

  • Prismic - это условно-бесплатный бекенд для веб-сайтов и приложений, оптимизированный с целью повысить продуктивность разработчиков и оснащенный визуальным конструктором для моделирования контента страниц и публикаций.

    Благодаря API-ориентированной архитектуре система обеспечивает полную технологическую свободу: вы можете использовать любые любимые языки программирования и фреймворки.

  • Contentful - условно-бесплатная платформа разработки нужной вам системы управления на основе взаимодействия с предлагаемым API-интерфейсом.

Другие безголовые CMS

  • Ghost - независимая платформа для профессиональных издателей, написанная на языках программирования TypeScript и JavaScript.

    Это по сути REST API, предназначенный разработчикам приложений для веб-серверов на основе Node.js. Имеет также красивый административный клиент для редакторов, построенный на фреймворке разработки одностраничных веб-приложений Ember.js.

    Следует отметить, данная безголовая CMS довольно популярна и используется такими компаниями как Apple, NASA, Sky News, OpenAI и многими другими.

  • Keystone 5 - масштабируемая платформа, написанная на языке TypeScript, которая позволит вам создать очень даже настраиваемую CMS и полноценный GraphQL API к ней за считанные минуты.

    Платформа представляет собой полное переосмысление фреймворка разработки веб-сайтов KeystoneJS для веб-сервера на основе Node.js, и потому имеет расширяемую архитектуру и административный интерфейс.

  • TinaCMS - вообще говоря, размещаясь сначала на прежнем домене, это была не CMS, а всего лишь легковесный инструментарий для разработчиков веб-сайтов с помощью JavaScript-компонентов. Инструмент тот использовался такими генераторами сайтов как Create-React-App, Gatsby, Next.

    С переездом на текущий домен у Tina появился собственный визуальный редактор контента, и она вполне стала претендовать на роль именно безголовой CMS, а не просто тулкита программирования UI для сторонних real-time редакторов.

  • Cockpit - это безголовая CMS с API-ориентированным интерфейсом, размещаемая на вашей стороне. Имеет платную и бесплатную версию. Написана на языке программирования PHP.

  • Magnolia - является корпоративной платформой цифрового взаимодействия, которая начиналась как безголовая система управления контентом с открытым исходным кодом и опиралась на Content repository API для программной платформы Java.

  • dotCMS - функционирует как унифицированная универсальная CMS, предлагая изначально API-ориентированную инфраструктуру (как REST, так и GraphQL) наряду с традиционным визуальным редактированием.

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

Традиционные CMS с API на борту

В отличие от безголовых, монолитные CMS объединяют в себе 2 компонента: бекенд - как элемент хранения и администрирования контента, и фронтенд - как элемент визуализации (представления) данных и доставки инициатору запроса.

Это объединение избавляет авторов таких CMS от необходимости разрабатывать ещё и внешний программный интерфейс, так как компоненты находятся на том же сайте и доступны для взаимодействия сию минуту.

Однако некоторые монолитные CMS специально содержат встроенные REST или GraphQL API, что позволяет им также функционировать в headless-режиме:

  • WordPress - имеет комплексный нативный REST API, который через плагины может быть дополнен с помощью GraphQL, чтобы предоставлять структурированный контент любому стороннему фронтенду.

  • Drupal - известен своим надёжным подходом API-first, предлагая обширную нативную поддержку REST API и официальную интеграцию GraphQL из коробки.

  • Joomla - содержит активно поддерживаемый REST API, позволяющий разработчикам получать и обрабатывать основные данные CMS в чистом виде, то есть без подключения шаблонизатора.

  • Umbraco - это система на основе технологии .NET, которая обеспечивает традиционную визуализацию контента, поддерживая при этом ещё и доставку по принципу API-first как через REST, так и через GraphQL.

  • TYPO3 - корпоративная CMS с открытым исходным кодом, которая имеет интегрированные мощные API-возможности, позволяющие получать контент без шаблонизации, используя при этом монолитный бекенд.

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

Фреймворки, предлагающие API

Почти каждый современный фреймворк для веба, микросервисов, headless-применения и прочего имеет встроенный API, если по типу решаемой им задачи заранее предполагается, что вам понадобится программный интерфейс ровно такого объёма. Имеется в виду число предоставленных конечных точек, количество поддерживаемых комманд (запросов) в них, структура параметров запроса, форматы ответов и тому подобное.

Или же фреймворк может быть спроектирован таким образом, чтобы дать вам лишь каркас интерфейса, который вы расширите, то есть допрограммируете до желаемого объёма.

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

Python

  • FastAPI - известен высокой скоростью выполнения, автоматической документацией OpenAPI, встроенной поддержкой асинхронности, содержит пользовательский интерфейс Swagger.

  • Django REST Framework - инструментарий для создания RESTful API на основе Django, содержит автоматически генерируемый программный интерфейс.

  • Flask - лёгкий, минималистичный фреймворк, идеально подходящий для небольших, гибких API и прототипов.

JavaScript / TypeScript

  • Express.js - гибкий фреймворк для создания API и веб-приложений на основе Node.js сервера, для чего предоставляет набор инструментов обработки запроса, маршрутизации, поддержки middleware.

  • LoopBack - фреймворк для построения API и микросервисов на основе Node.js сервера и языка программирования TypeScript со встроенной поддержкой REST, GraphQL, WebSockets, а также функции аутентификации и авторизации.

  • Fastify - эффективный веб-фреймворк на основе Node.js с низкими накладными расходами, ориентированный на максимальную пропускную способность API-запросов.

  • NestJS - модульно-расширяемый фреймворк на языке программирования TypeScript для создания эффективных, надёжных и масштабируемых API и серверных приложений, выполняемых на веб-сервере на базе Node.js.

Java

  • Spring Boot - стандарт для корпоративных API на платформе Java, отличающийся автоматической конфигурацией и обширной экосистемой, предлагая встроенную поддержку разных источников данных, инструментов для разработки RESTful-сервисов, а также большую библиотеку расширяющих плагинов и модулей.

  • Eclipse Jersey - фреймворк, являющийся по сути реализацией спецификации Java API for XML Web Services, популярной при создании REST API.

  • Apache Grails - фреймворк, написанный на языке программирования Apache Groovy, который имеет встроенную поддержку RESTful API и позволяет интегрировать существующий Java-код или писать смесь Groovy и Java-кода.

PHP

  • Laravel - популярный фреймворк для быстрой разработки API, известен своим элегантным синтаксисом и удобными для разработчиков функциями.

  • Lumen - легковесный микрофреймворк от авторов Laravel, разработанный специально для создания API и микросервисов.

  • MVC Skeleton - простейший каркас веб-приложения на основе архитектуры Model-View-Controller, построенный на фреймворке MiMiMi, позволяющий с той же лёгкостью создавать ещё и чисто API или микросервисы, чьи параметры запроса передаются как предопределённые сегменты URL: имя исполняемой API-команды, имя оперируемой таблицы базы данных, формат упаковки ответных данных.

  • Comet - фреймворк со встроенным веб-сервером для быстрой отдачи статики, расширенной поддержки сессий и прочими функциями, используется программистами для построения быстрых REST API, CRUD, административных панелей и микросервисов.

C# / .NET

  • ASP.NET Core Web API - высокопроизводительный кроссплатформенный фреймворк от компании Microsoft, используемый для создания надёжных облачных API.

Go (Golang)

  • Gin - легковесный веб-фреймворк, известный своей высокой производительностью и скоростью.

  • Fiber - фреймворк, вдохновлённый концепцией фреймворка Express.js, но переписанный специально на язык программирования Go и оптимизированный для нулевого выделения памяти.

Ruby

  • Ruby on Rails - предлагает изначальный режим "только API", чтобы выдавать JSON-ответы для клиентской стороны сайта или веб-приложения без визуализации данных с помощью шаблона на серверной стороне.

Заключение

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

Теперь команде разработки требуется лишь правильно выбрать подходящую ей headless-архитектуру, описать ("сконструировать") в ней желаемую базу данных, а разработку фронтенда проводить на той технологии, которая близка им по духу.

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