Javascript  SPA framework