Рубріки: Back-end

Лучшие автономные CMS с открытым исходным кодом

Богдан Мирченко

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

По ее словам, если вы планируете использовать Headless CMS для масштабирования управления контентом по каналам, вы можете выбрать Headless CMS с открытым исходным кодом или Headless CMS по модели SaaS (software-as-a-service). Сравнение обоих вариантов есть здесь.

Ghost 

Эта автономная CMS предоставляет платформу для публикаций как частным лицам, так и компаниям. Разработана с использованием JavaScript (Node.js) и распространяется под лицензией MIT. Предлагает набор современных инструментов публикации, полнофункциональный редактор контента, возможность создания мультиавторского, многоязычного и хронологического контента. Может интегрироваться с существующими инструментами, такими как Zapier, Slack и Mailchimp, чтобы расширить рабочие процессы и обеспечить унифицированный опыт.

Предоставляет библиотеку JavaScript для взаимодействия с ContentAPI, что упрощает взаимодействие с контентом без создания ручных вызовов API.

const api = new GhostContentAPI({
    // Ghost DEMO site
    host: 'https://demo.ghost.io',
    // Authentication via API Keys
    key: '22444f78447824223cefc48062',
    version: "v3"
  });
  
  // fetch 5 posts, including related tags and authors
  api.posts.browse({
      filter: 'tag:fiction+tag:fiction'
  })
  .then((posts) => {
      posts.forEach((post) => {
          console.log(post.title);
      });
  })
  .catch((err) => {
      console.error(err);
  });

 Strapi

Предназначена для работы со всеми сайтами с архитектурой JAMstack. Предоставляет разработчикам гибкую и расширяемую платформу для управления и распространением контента. Поддерживает как реляционные, так и нереляционные базы данных и не зависит от внешнего интерфейса, будь то React, Angular или Vue. Strapi можно использовать для создания простых веб-сайтов, мобильных приложений и полнофункциональных коммерческих платформ.

Платформа может быть расширена с помощью сторонних интеграций, таких как Redism, Sentrym и Mailgun. В примере ниже показано, как работать со Strapi API с помощью библиотеки Axios.

import axios from 'axios';
 
  const token = '';
  
  // Request API.
  axios
    .get('http://localhost:1337/posts', {
      headers: {
        Authorization: `Bearer ${token}`,
      },
    })
    .then(response => {
      // Handle success.
      console.log('Data: ', response.data);
    })
    .catch(error => {
      // Handle error.
      console.log('An error occurred:', error.response);
    });

Cockpit 

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

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

Следующий пример демонстрирует простой запрос GET для получения сообщения из Cockpit с помощью метода fetch.

fetch('/api/collections/get/posts?token=', {
        method: 'post',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({
            filter: {published:true},
            fields: {fieldA: 1, fieldB: 1},
            limit: 10,
            skip: 5,
            sort: {_created:-1},
        })
    })
    .then(res=>res.json())
    .then(res => console.log(res));

ApostropheCMS 

В отличие от предыдущих платформ, ApostropheCMS — это полнофункциональная CMS с открытым исходным кодом. Она создана с использованием Node.js и предлагает автономный вариант через модуль apostrophe-headless, что позволяет разработчикам интегрировать его с любым JAMstack-сайтом и предоставлять контент через RESTful API.

Платформа ориентирована на быстрый и гибкий цикл разработки, сокращающий «software time to market». ApostropheCMS можно расширить с помощью расширений и интеграций, таких как, например, Salesforce Personas, Redis Caching, Stagecoach и Webhook notifications.

Аутентификация платформы может быть выполнена с помощью API Keys или Bearer Tokens.

modules: {
       'apostrophe-headless': {
           apiKeys: [ '' ],
       },
       'products': {
           //Other configurations
           // Expose via API
           restApi: true
       }
     }

Приведенный ниже код позволяет запрашивать данные в ApostropheCMS с помощью REST API.

// Get all products
const { results } = await $axios.$get('/api/v1/products')

Directus

CMS построена с использование Node.js и использует Vue.js для интерфейса админки. Распространяется по лицензии GPLv3. Может подключаться к уже существующей базе данных или создать новую, чтобы дополнить проект выдавать контент с помощью RESTful или GraphQL API. Имеет самую широкую поддержку для реляционных баз данных с бесплатными решениями. 

Directus поддерживает создание настраиваемых конечных точек API и предлагает интерфейс командной строки для создания и управления проектами. В платформе есть JavaScript SDK, который действует как оболочка для библиотеки Axios, адаптированной для взаимодействия с API.

Ниже показано, как использовать Directus SDK для аутентификации пользователя и возврата необходимых элементов.

import DirectusSDK from '@directus/sdk-js';
 
    const directus = new DirectusSDK('https://api.example.com/');
    
    async function getData() {
        // Authentication using email and password.
        await directus.auth.login({ email: 'admin@example.com', password: 'password' });
    
        // Obtain all the articles.
        return await directus.items('articles').read();
    }
    
    getData();

GraphCMS 

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

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

Для авторизации запросов API платформа использует токены аутентификации. Ниже показан пример простого запроса для получения опубликованных сообщений об объекте «Dog», упорядоченного по созданной временной метке.

{
        posts(
          where: { title_contains: "Dog" }
          orderBy: createdAt_DESC
          stage: PUBLISHED
        ) {
          id
        }
    }

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

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

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

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024