Вариант реализации
Доброго дня, предложу вариант, с которым обычно работаю:
1. Запрос получает фронт-контроллер, единая входная точка веб-приложения.
2. Он определяет, какая модель данных затребована (на шаблоны ему пока побоку), в данном случае - СписокМудаков.
3. Запрашивает у Model-слоя необходимую модель. По сути - набор объектов, в родном для системы формате (в вашем случае - JavaScript-массив Мудаки[] + отчет об ошибках, если нужен: Ошибки[]). Никаких потерь на сериализацию на данном шаге!
4. Определяется шаблон. Варианты:
- HTML, JSON, XML...;
- редирект (этому пользователю нельзя видеть список мудаков);
- сообщение об ошибке (вместо запрошенных данных) в нужном формате;
- ...etc;
Фишка определения шаблона именно на этом шаге (а не на первом-втором) в том, что мы адекватно можем отреагировать на ошибки формирования модели, ограничения прав доступа и т. д.
5. Модель отдается соответствующему шаблонизатору. Фишка, опять же, в том, что видов шаблонизаторов здесь можно подключить сколь угодно много (HTML, XML, JSON, ...).
6. Шаблонизатор сериализует модель должным образом и отдает клиенту.
Тип подключаемого шаблонизатора может определяться параметром запроса или урлом. Например, по умолчанию генерим HTML, при наличии в запросе &format=json - генерим легковесный JSON.
NGINX на входе становится не обязательным (и даже не желательным в контексте работы фронт-контроллера), но вполне может использоваться для выдачи статики.
В общем, ничего ничему не мешает. Успехов в серверном JS!
|