I’ve been playing with CouchApp lately and I like the idea of making single page apps the rely a lot on Ajax and a chatty rather than chunky. I saw mustache.js the other day and decided to use it in my CouchApp.
Mustache.js is the JavaScript implementation of the templating engine Mustache. Its basically logic-less templates, you define a template and as long as the object parsed through the template contains a field in the template then it’s value will get pushed into the result. It’s a little more than that but I try to keep things succinct.
I was rather surprised with it and I really like it. There is this simplicity to it that I really like. You have a model, you define a template, parse both into a function and bam you have yourself an output for data (almost).
I come from an asp.net background and data binding was a staple for me. I would define these data sources and then i would define a grid and then bind the data to the grid columns. Most of the time the standard controls would get you out of trouble but occasionally you would define a custom template the would automagically display what you wanted.
It wasn’t bad but it doesn’t feel as natural as mustache does. I picked this up very quickly and enjoy playing with it. Defining how a list was displayed was just as easy as displaying a single object. In .net land this was 2 separate data bound controls and some server side logic, in mustache it’s much more lean.
What I really like is how you just parse a template and a model through the mustache object. For me this is where you can separate logic, your views are objects that are platform agnostic and your mustache templates are browser specific (Mikito Takada’s single page app put this idea in my head).
I work in an environment where IE6 (don’t hate) is still the standard browser and we often run into the issues towards the end where a simple layout in standards land just looks crap on IE6. I intend to play with this some more and I believe this is going to save us time in the long haul.
If we just push things to the client as models and then have templates that are specific to a client then we should be a lot sweeter… In theory, all things work well in my head. I will test this out and post more on how things go later.
PS
I would say that my organisation is responsible for Australia still being 0.8% on ie6countdown :)