MVC-like JavaScript framework