JavaScript client-side template engine