Structured, data-driven templating for JavaScript