Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Mustache is a fine templating library and liked by a lot of people. However I see these drawbacks:

  • 600 lines of code, 9 contributors for 20 line code problem

  • It’s therefore difficult to understand completely.

  • A lot bugs arise from people using Mustache and using {{ }} instead of All data is automatically escaped for special characters in HTML.

    • In mustache programmers need to learn from the school of hard knocks to always use {{{ }}}

    . The later format is required if you have data which includes & < and > characters. Not using the later form results in subtle bugs that only show up later
    • syntax for tokens - otherwise user data with these special characters can break the application.

    • It’s not bad compared to some templating frameworks but having conditional if/not support is starting down the path of building a bad language.

  • It has unnecessary features like template caching - which exchanges speed for memory usage and adds complexity - premature optimization and a simpler library will be faster. This optimizing for a complicated design.

  • All data is automatically escaped for special HTML characters. This eliminates cognitive load of having to pick whether or not to escape data and eliminates a lot of bugs.

  • The library is small - you can see exactly what it does in one screenful of code. No big mysteries as to what it does

  • Zero fancy features - nothing whatsoever resembling a language with if conditionals and so on. Therefore zero danger of the templating library becoming a crappy language.

    • There are no fancy callback features to tempt developers to write complicated code. It’s only going to work with an array of data.

    • No caching or other unnecessary pre-mature optimizations - simple code will be faster anyway.

  • Putting the responsibility elsewhere for handling logic in absence of data etc. Encouraging separation of concerns.