Это классический подход для любых серверных технологий на PHP, NodeJS, Python, Go, C#, Java и т.д.. По сути есть всего-лишь три варианта для работы веб-приложения: 1) статические данные, когда нечто выдается 1 в 1, HTML, JS, медиа-содержимое 2) динамические данные, когда они формируются стороной сервера и 3) клиентские приложения, когда сервер выдает данные, а формирование отображения и интерфейса происходит на клиенте. Есть так же гибридный подход, когда страницы подгружаются кусками или часть отображения формируется на клиенте.
Первый подход можно не рассматривать, он сосуществует, а второй — наиболее распространен. Поскольку большая часть сайтов имеют динамическое содержимое, будь то форум, лента новостей, магазин и т.д., все формируется из базы данных и на сервере. Третий подход все больше распространяется, во-первых, потому что нагрузка на сервер ниже, ниже объем передаваемых данных, во-вторых, потому что как правило клиентское приложение быстрее, но такой подход имеет много ограничений и в общем случае слабо совместим банально с поисковыми машинами. Поэтому использование шаблонизаторов, как способа формировать HTML (и другие вещи) на стороне сервера пока еще основной подход в вебе. Попробуйте хотя бы вывести ленту новостей на главную страницу, обойдясь без этого.