This only works for small projects.
Data-heavy frontend usually sends multiple requests to allow async rendering of different parts of a page with different loading times.
This also doesn't work if your design changes a lot. AKA a design change will now mean a backend re-design too.