I'm sure you all know that i'm really talking about the Jade template engine and syntax which is the nom de plume of folks building products with Express.js. I'll discuss what I've chosen to move to shortly but more of the pain after many years of joy.
Technology needs to get out of our way, it should be the tool we use and not the focus of the product we are trying to build. In short technology decisions, especially at the markup level, should enable and not become the conversation. Over the past year we've worked with UX experts, designers, front-end engineers as well as a top creative agency and in every situation I needed to make excuses for Jade. I would be heard saying "It's just like HAML, don't worry" or "just give us the HTML and we'll convert it to Jade". That last one really struck me, why are we obfuscating something as ubiquitous as HTML. For all of its tending towards verbosity HTML is simple and understood by the non-coders in your life. But us cool kids wanted to make it more expressive and cut out any unnecessary noise. Instead I'm afraid we've screwed the pooch by creating yet another esoteric piece of kit as we worship at the alter of technology progress and change in spite of users, in this case my users were the UX & design talent we've employed. So I decided today to stop the insanity and switch our front-end markup code base back to HTML while taking advantage of Swig templates.
Enter Swig, its HTML with handlebars style syntax, custom tag creation & fast server side rendering with pre-compilation options. I've converted over one mobile app and one web app so far and really am grokking its ease and HTML structure.
<h1></h1> <ul> <li class= > </li> </ul>
I can now call on UX & front-end talent not worrying about making excuses for my odd companion named Jade, we had a good run. I am still dating CoffeeScript though, perhaps she'll also get thrown under the bus someday, probably once ES6 is a browser standard.
bar // Create a list of people, only if there are items in the people array <ol> <li> </li> </ol>