To pick between the 18 templating options, we assigned each option to a small team of front-end engineers and setup a test: render a (very simplified) LinkedIn profile.
We gave each team a list of features to look for in their assigned templating solution. The idea was to fill out a score, from one (poor) to five (excellent), for each item:
- DRY: how DRY is the templating technology? is there support for code-reuse and partials?
- i18n: is there support for translations and multiple languages?
- Hot reload: are changes visible immediately or is there a compile/deploy cycle?
- Performance: how long does it take to render in the browser and server?
- Ramp-up time: how is the learning curve?
- Ramped-up productivity: once you've ramped-up, how fast can you build things?
- Server/client support: can the same template be rendered both client-side and server-side?
- Community: is there an active community using this project? Can you google issues?
- Library agnostic: are there dependencies on other JS libraries, such as jQuery or Mootools?
- Testable: how hard is it to write unit and integration tests?
- Debuggable: is it possible to step through the code while it's running to track down errors?
- Editor support: is there an editor with auto-complete, syntax highlighting, error checking, etc?
- Maturity: is this a relatively stable project or still experimenting and churning?
- Documentation: how is the documentation?
- Code documentation: do the templates encourage/require documentation/comments?