Filters make it easy to embed compiled languages such as coffeescript or markdown directly into the template. A filter will allow you to keep your inline code and content consistent with the rest of your codebase so you can continue using your prefered language with your outputted HTML.
Apart from their functionality all template engines need to be efficient in terms of the time they require to render a page. Jade beats most of its competitors in this area, it is highly optimized to deliver good performance on both the server and client ends.
The structure is entirely determined by the indentation. That means that indentation errors will ruin the end result, often without an easy way to find the error. Indentation errors are easily introduced by copy-pasting, by rearranging code and by working in a team where not everyone uses the same indentation style. (E.g tabs vs. spaces.)
One of the distinguishing features of Jade is its clean syntax. Elements are created with CSS selector syntax which makes the template consistent with your style sheet and JavaScript element selector library.
Jade compiles to a JavaScript function that produces the ultimate output. This interim format makes it useful for embedding in conditions where you're trying to save space or decrease processing requirements.
When working with templates it's extremely important to understand the HTML elements at play, and to see them as natively as possible. Jade removes this, making developers have to do the abstraction in their heads.
Handlebars is available as a JavaScript library, a Django module as well as Java, Ruby, Scala & PHP libraries, which means you can use it for frontend and backend templating in the language of your choice.
By design logic-less templates force you to separate concerns thus helping you avoid future problems with refactoring. It also allow templates to be used with multiple programming languages without changes.
Mustache provides you with a clean and easy to understand syntax. Having a syntax that is readable is always a huge plus, since this means easier maintenance and code readability in the future.
Mustache.js has multi-language server side support, which essentially means you can use mustache based templates on languages other than javascript. (like if your server-side was built on Java you could still use Mustache.js)
By design logic-less templates force you to separate concerns thus helping you avoid future problems with refactoring. It also allow templates to be used with multiple programming languages without changes.
Mustache js's attempts at making some things simple makes them so easy that they're almost difficult. That is the case with some basic tasks like figuring out how to apply css to shade odd/even rows on your template based content.
Handlebars being an extension of Mustache bests it in both speed and power. It adds additional features to Mustache which make writing templates easier and faster.
Benchmarks have also shown that Precompiled Handlebars renders in about half the time of Mustache and the rewritten Handlebars (current version) is 5 to 7 times faster than Mustache.
Vue can easily be integrated with other front-end libraries. This makes it an extremely versatile tool and it's easy to fix its shortcomings or missing features by just plugging in another library.
EJS introduces fairly small amount of new syntax that one has to learn to become fully proficient. The syntax itself is easy to comprehend for anyone who is even somewhat familiar with JavaScript and CSS.
Your html/text remains pretty much the same before and after rendering. EJS filters out and performs its functions on any occurrences of its own <%= %> tags in your template.
Knockout uses HTML5 data attributes to bind HTML elements to data objects in javascript. This allows more work to be done by the framework rather than requiring you to specify where data should be bound in the javascript. The data binding is very intuitive as the bindings are done within the HTML itself in the location it should be bound.