Terence Parr wrote a seminal article entitled “Enforcing Strict Model View Separation in Template Engines”. In this article he states:
The mantra of every experienced web application developer is the same: thou shalt separate business logic from display. Ironically, almost all template engines allow violation of this separation principle, which is the very impetus for HTML template engine development.
After living at Perlmonks for the longest, I finally stuck the list of Push-style templating systems into a Google doc.
This list, and his paper, were developed before 100% server-side javascript rendering existed. Now, things such as UrWeb, Vaadin and ScalaJS represent the cutting edge of dynamic HTML generation, being highly interactive yet typesafe and driven by a full computer programming language. Those language both compile to JS or make use of js without having the type-weakness and error-proneness of Javascript itself, yet offering rich highly interactive user experiences.