Categories: None [Edit]
onesie
A Rack middleware to make URLs in one-page webapps easier.
In a couple of recent projects, I've needed to avoid full page
refreshes as much as possible. In the first, I wanted to keep an
embedded music player active while the user was browsing. In the
second, I just wanted fancier transitions between pages.
It's possible to do this in an ad-hoc way, but I very quickly got
tired of hacking things together. Enter Onesie.
Onesie congealed from these requirements:
* I want a one-page web app,
* But I want the back button to work,
* And I want search engines to still index some stuff,
* And I (mostly) don't want to change the way I write a Rails/Sinatra app.
If someone visits http://example.org/meta/contact, I want
them to be redirected to http://example.org/blah/#/meta/contact,
but after the redirection I still want the original route to be
rendered for search engine indexing, etc.
When Onesie gets a request, it looks to see if under your preferred
one-page app path ("blah" in the example above). If it's not, Onesie
sets the current request's path in the session and redirects to your
app path.
If a request is under the one-page app path, the "real" request's path
is retrieved from the session and used for subsequent routing and
rendering. This means that, as above, a request for
http://example.org/meta/contact
Will be redirected to
http://example.org/blah/#/meta/contact
But still render the correct action in the wrapped app, even though
URL fragments aren't passed to the server.
This is a terrible explanation. I'll write a sample app or something
soon.
Total
Ranking: 124,554 of 183,127
Downloads: 4,636
Daily
Ranking: 47,329 of 183,106
Downloads: 1
Downloads Trends
Ranking Trends
Num of Versions Trends
Popular Versions (Major)
Popular Versions (Major.Minor)
Owners
# | Gravatar | Handle |
---|---|---|
1 | jbarnette |