But in pure HTML, how do you do something like ng-repeat?[1] You can’t. You have to either use a template language or you have to construct the HTML in the code. Both have goods and others. A template language allows you to keep an HTML like format that non-programmer’s can possibly understand and contribute to, and that can help separate the view from the business logic, but it comes at the cost of having to learn a new language / framework and the hurdles that abstractions sometimes create.
Similar question on Quora. [2]
[1] https://docs.angularjs.org/api/ng/directive/ngRepeat [2] http://www.quora.com/What-are-the-pros-and-cons-of-using-a-t...
Consider this takes me 45 seconds to write:
<div class="container">
<div class="container__item" data-id="#{item.id}">
<h1 class="container__item__title">#{item.title}</h1>
</div>
</div>
Versus 15 seconds: .container
.container__item(data-id=item.id)
h1.container__item__title= item.titleFor example, http://emmet.io/
The problem with your "15 seconds" example is that it is almost completely unreadable. .container? Ok, .container what? Is it a <p>? <div>? <span>? I think you're losing a lot more by trying to gain 30 seconds of time.
It takes 2 seconds to learn and forever on know that Jade defaults non-specified tags to divs.
For me Jade is faster to both write and read.