turbolinks/turbolinks: Turbolinks makes navigating your web application faster
I really, really like the approach that this JavaScript library is taking in treating Ajax as a progressive enhancement:
Turbolinks intercepts all clicks on
a href
links to the same domain. When you click an eligible link, Turbolinks prevents the browser from following it. Instead, Turbolinks changes the browser’s URL using the History API, requests the new page usingXMLHttpRequest
, and then renders the HTML response.During rendering, Turbolinks replaces the current
body
element outright and merges the contents of thehead
element. The JavaScriptwindow
anddocument
objects, and the HTMLhtml
element, persist from one rendering to the next.
Here’s the mustard it’s cutting:
It depends on the HTML5 History API and Window.requestAnimationFrame. In unsupported browsers, Turbolinks gracefully degrades to standard navigation.
This approach matches my own mental model for building on the web—I might try playing around with this on some of my projects.