Clean, but what are you supposed to do with user agents which do not support JavaScript? Server-side templates still let you customize the page in that case.
When JS processing isn't available on the client side, this same stack is moved to the server side. This way the same logical separation between UI and data is maintained.