Измененная версия modxclub.ru на prisma-cms, пока что еще в связке с MODX

Всем привет! Недавно я писал про свою новую наработку - prisma-cms. Комментариев особо не последовало, но это и не удивительно. Во-первых, в целом активность на сайте упала, а во-вторых, сама по себе тема довольно новая и во многом особо не понятная. Тем не менее, я считаю, она довольно интересная, и всем, кому интересны современные тренды веб-разработки (а не только то, что уже сами уже давно освоили), советую более внимательно к этому присмотреться. Почему? Ну хотя бы потому что текущая версия MODX-Клуба уже работает на этой платформу. Уточню: основная часть сайта по-прежнему работает на MODX. Но рендеринг страниц уже полностью оторван от него и работает самостоятельно. Все данные для рендеринга подтягиваются по API. Вот API как раз и обеспечивает prisma-cms. Для этого к ней был написан модуль для работы с MySQL напрямую. Это сделано по причине того, что сам по себе MODX имеет очень ограниченные возможности для реализации API. Да, есть коннекторы и процессоры. Но попробуйте, к примеру, из коробки получить список пользователей и список ресурсов, да еще и с сортировкой и фильтрацией, а плюс к этому выдавать не все поля, а только определенные. Я более того скажу, без авторизации вы вообще не сможете ничего такого получить. Вот поэтому и пришлось писать модуль для прямого доступа к БД. Если интересно, вот этот модуль: https://github.com/prisma-cms/boilerplate-modx/blob/master/src/server/modules/modx/db.js А для работы самого modxclub.ru был дописан расширяющий его модуль для работы с конкретными таблицами https://github.com/MODX-Club/modxclub.ru/blob/master/src/server/modules/modxclub/db.mjs Да, в этом модуле много строк. Но, во-первых, его еще можно значительно оптимизировать, а во-вторых, это как раз показывает, почему эффективней использовать чистую prisma, ведь в случае с ней не приходится все это писать :) Ну а для того, чтобы все это заработало, вот такой скрипт сервера написан: https://github.com/prisma-cms/boilerplate-modx/blob/master/src/server/index.js Для сравнения, в базовой версии @prisma-cms/boilerplate этот же скрипт выглядит вот так: https://github.com/prisma-cms/boilerplate/blob/master/src/server/index.mjs Но работа всего этого не ограничивается только прямыми запросами в базу данных. Некоторые функции выполняются непосредственно с MODX, такие как регистрация, авторизация, создание и редактирование топиков и комментариев и прочие функции. То есть запрос приходит по API на призму, оттуда, если это прописано в резолвере, запрос шлется на MODX, приходит ответ и формируется окончательный ответ вовне. Вывод: на базе prisma-cms можно не только создавать проекты в рамках заданной концепции, но и взаимодействовать с другими работающими системами, и не только с MODX. Это вполне может работать и с Bitrix, к примеру. Есть у меня и модули для работы с другими сервисами. В этом вся и прелесть, что послав по API всего один запрос, ответ может формироваться при взаимодействии сразу с несколькими сторонними сервисами (каждый из которых, в свою очередь может так же взаимодействовать с другими сервисами). Это очень мощный инструмент для разработки распределенных систем. Вы можете и сами попробовать поиграться с запросами. Вот API-страница: https://api.modxclub.ru Для примера предлагаю выполнить вот такой запрос: Вы получите список пользователей, проекты, в которых они участвуют, список других участников в их проектах (и какую услугу по ним указывали), а так же созданные ими ресурсы. Можете еще раскомментировать условие и прописать юзернейм любого пользователя. Ну и вообще можете всяко с запросами поиграться. Или вот еще пример, список комментариев, кто их создал, в каких топиках они написаны и кто эти топики создал: Полученные таким образом данные можно уже выводить где угодно. В этом и суть headless-cms: не суть что и как там крутится на сервере. Главное - возможность самому сформировать запрос из возможных вариантов, получить данные и вывести уже где и как хочется. Согласитесь, не плохо было бы, к примеру, выводить в своем личном блоге все написанные собой здесь топики и комментарии. Собственно, так в дальнейшем и будет развиваться MODX-Клуб: весь контент и ПО будет общедоступным. То есть каждый желающий сможет на своем домене разместить копию MODX-Клуба, если ему это хочется, или взять отдельные его части для разработки собственного ресурса. И каждый при желании сможет внести вклад в развитие, к примеру, дописав какие-нибудь интерфейсы (об этом будет более подробно позже, есть специальные заготовки и методики, но их еще надо будет расписать). И в заключение: исходный код сайта лежит здесь: https://github.com/MODX-Club/modxclub.ru Но пока не получится у себя его развернуть и заставить работать, просто потому что для этого требуется прямой доступ к базе данных, которого, по понятным причинам, я не могу дать. И это еще одна причина окончательно переписать modxclub.ru на prisma-cms, полностью оторвав его от MODX. Другие причины, в основном, связаны с тем, что в связке с MODX приходится слишком много костылей лепить и разработка простейших вещей превращается в кошмар. Тем не менее modxclub.ru не перестанет быть MODX-Клубом. Здесь по-прежнему к месту любые вопросы по MODX, а так же будет введено довольно много полезных плюшек для более быстрого поиска информации по базу, личному структурированию и хранению этой информации. Плюс к этому MODX - это по большей степени все-таки только бэкэнд. Фронт по-прежнему на совести конечного разработчика (особенно когда дело касается с javascript). Так вот на этой технологии можно строить не только комплексные проекты, но и отдельные интерфейсы для готовых сайтов, конечно же, в том числе и на MODX. Это может быть личный кабинет, сложная форма заказа, различные анимационные элементы страниц и т.п. Так что, я думаю, MODX-сообщество останется только в выигрыше. UPD: Приведенные в статье запросы актуализированы для текущего сайта MODX-Клуба, а не старой версии в связке с MODX.