> No implementation dependencies > Small interface surface > Based on standards > Parallel development > Independent deployment > Autonomous operations Backend Platform
possible > No implementation dependencies > Small interface surface > Based on standards > Parallel development > Independent deployment > Autonomous operations Backend Platform Frontend Platform
according to Maciej Ceglowski (@baconmeteor): “1. Make sure that the most important elements of the page download and render first. 2. Stop there.” http://idlewords.com/talks/website_obesity.htm
> Ignores URIs > Expose single “endpoint” > Fails to embrace the Web 1) in the SOAP/WSDL sense “Web app”2) > Uses browser as runtime > Ignores forward, back, refresh > Does not support linking > Exposes monolithic “app” > Fails to embrace the browser 2) built as a careless SPA
Logic Data Server Client > Rendering, layout, styling on an unknown client > Logic & state machine on server > Client user-agent extensible via code on demand
format > Option 1: Just use HTML > Option 2: Just invent your own JSON-based, incomplete clone > Clients need to be RESTful, too > Option 1: Use the browser > Option 2: Invent your own, JS-based, buggy, incomplete implementation
sufficiently complicated JavaScript client application contains an ad hoc, informally-specified, bug-ridden, slow implementation of half a browser. (Me, with apologies to Phillip Greenspun)
a fan of single page apps, at least build more than one > Don’t reinvent browser integration features > Accept some inefficiency > Trade-off for framework independence > Avoid modularity à la Java EE, OSGi etc.