Hacker News new | ask | show | jobs
by seanconaty 4802 days ago
Anyone interested in something like this should also check out PJAX. Push State and AJAX. https://github.com/defunkt/jquery-pjax

This is what GitHub uses between tabs on its Pull Requests page. I love how simple the implementation is.

Your app still needs to follow the convention of having links going to different pages with URLs. I know it's not "single page" and the interaction is not that "rich." But it's nice because all your logic is still on the server, all rendering and templates are on the server and the server responds with either a full page of HTML or a partial page of HTML depending on an HTTP header you set.

Oh yeah, it also works without Javascript, crazy!

1 comments

That is how Backbone and all other current frameworks work.
No it isn't.
Care to explain? They use pushState or hashes for routing, and load data via XHR. If you are using pushState it is assumed that the URL must exist on the server.
Having the URL exist on the server isn't the same as serving a rendered page from the URL, which is what most SPAs do. You could just rewrite all URLs in a website to point back to your index.html, then have the client side router initialize the app from the URL parameters. If you don't have javascript turned on (e.g. googlebot) then all you'll see is a blank page
Googlebot interprets javascript. In that case you shouldn't use pushState but fragment URLs[1].

I should have said it is assumed that the URL exists on the server and points to the same resource/content; otherwise setting URLs using pushState makes no sense. GitHub is a good example of how it should be done, not an exception.

[1] https://developers.google.com/webmasters/ajax-crawling/docs/...