Лучше разделить бэкенд и фронтенд. На бэке оставить только API, на фронте реализовать всю логику отображения данных, полученых с сервера.
Смешивать разные языки и технологии (js + php) в 1 монолитное решение, чтобы построить что-то динамическое и MVC-подобное плохо, ибо спустя некоторое время поддерживать такого монстра может стать трудно.
В итоге, получится своя архитектура на бэке и независимая от него архитектура на фронте. При желании, можно будет прозрачно заменить одну из частей на что-то другое (при условии, что публичное АПИ останется тем же).
Например, к готовому АПИ написать мобильное приложение.
Или заменить серверную реализацию, реализовав её на более шустром языке/фреймворке.