Если в объектно-ориентированном программировании главным структурным элементом является объект, то в компонетно-ресурсном - компонент и ресуср. Компоненты формируются на стороне фронтенд, ресурсы - на строне бэкенд.
Например, такие фрэймворки как Laravel позволят разрабатывать целостное web-приложение (без разделения на бэкенд и фронтенд части), тогда используется архитектурный шаблон проектирвания HMVC (Hierarchical model–view–controller).
Но для разработки бэкендов такой шаблон проектирования не подходит, т.к. у бэкендов отсутствует V (view) из HMVC. Вместо шаблона бэкенд отдаёт ответ ввиде ресуров (Resource) с ответами в формате JSON. Laravel позволяет реализовывать такие ответы либо с помощью специальных методов (response(), json(), toArray() и др), либо с помощью специальных ресурсных классов.
Схематично и упрощённо такой подход в проектировании web-приложений можно представить следующим образом:
Так в ресурсно-компонентном программировании разрабатываются сразу два приложения: фронтенд и бэкенд. Фронтенд отправляет запрос пользователя в свой маршрутизатор, который в свою очередь перенаправляет запрос в маршрутизатор Laravel, который в зависимости от запроса вызывает тот или иной контроллер. В контроллере реализуется вся бэкенд логика, в том числе и обращение к модели (или к другим вспомагательным классам). Получив и преобразовав данные, контроллер их перенаправляет в ресурс, который возвращается в фронтенд.
Как в промышленности, так и в программировании, ресурсы - это то, что мы используем для производства. Модели можно представить ввиде полезных ископаемых. Тогда задача контроллера - это преобразование полезных ископаемых из недр моделей (данных) в ресурсы, которые могут быть использованы клиентом.
Со стороны фронтенда всё выглядит просто - запрос на бэкенд возвращает овет в формате JSON, который необходимо преобразовать в HTML. Используется ли на бэкенде сложная логика получения данных, или идёт обращение к JSON-файлу, фронтенду должно быть всё-равно, лишь бы быстро получить ответ с нужными данными.
В современных фронтенд-фрэймворках такие запросы на бэкенд и обработку ответов удобно реализовывать в компонентах. Тогда, компонент является инициатором запроса на бэкенд и получает ответы бэкенда.
--