Ranked in these QuestionsQuestion Ranking
Pro Works both on the client and on the server
Available for node.js and major web browsers
Pro Does not hide HTML
Swig does not abstract HTML syntax from you (like e.g. Jade does) giving a certain filling of control over the markup.
Pro Mustache compatible
You can import Mustache templates and add extra functionality, that's provided by Handlebars, on top of them.
Pro Clean syntax
Handlebars's syntax is very readable and easy to understand.
Pro Good global helpers support
Pro Compiled rather than interpreted templates
Handlebars.js allows you to pre-compile your templates so that the loading time at the client end could be reduced when your templated page is loaded.
Pro Clear separation of logic and markup
If something is not within
}}, it's not Handlebars. As a result, Handlebars "weaves" through HTML, instead of trying to become an invalid extension of it.
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.
Pro Easy to use any template also as partials
Templates may be nested and reusable parts can be factored out.
Pro Good paths support
With Handlebars.js you can create bindings with variables inside any path in your application.
Pro Easy to define extensions
With a few lines of code, a new extension (control or templating function) can be implemented. It will be called by the compiled templates.
Con No updates for at least 6 months
Swig has not received any new commits since June 25 2015.
Con Using partials is cumbersome
Con Hard to use documentation
Although the documentation exists and is fairly comprehensive, it's not always clearly written, and there is no search capacity.
Con Not much editor support
Handlebars.js doesn't seem to have many text editors that support things like auto-complete, syntax highlighting or error checking for it.
Con Does not play well with Angular.js
.. or any framework where you wish to compile handlebars.js template to the template understanable by the framework.