I’ve been working on Rembly, which uses Spine.js as the core piece that ties all the functionality together. I decided to use Mustache.js for my HTML templates. And finally, I chose ICanHaz.js as a simple and lightweight way of managing my HTML templates.
Although ICanHaz.js is a great start, managing my HTML templates became unwieldy because I started having little templates everywhere. Each part of a page that is dynamically updated needs to be broken out into its own template. When you’ve broken a web page into small parts, it’s hard to keep track of what it looks like when put back together. It also becomes hard to create the correct CSS styles when you lose track of the HTML hierarchy.
This lead me to enhance ICanHaz.js with a ton of new features. The primary one being nested templates, which allowed me to keep my full HTML page template in tact, while designating specific HTML tags as “sub templates” or partials. You can also specify additional templates to load and replace script “include” tags with the loaded HTML.