Do we need routers?
I no longer think, at least with Elm 0.17 and port modules, and I say this as the author of an elm transit router, one of the three main routers for Elm 0.16.
We need packages for route parsing: i.e. a way to convert a string representation of a path or hash into our internal application model. There are already several packages for this: the Bogdanp / elm-route route and etaque / elm-route-parser (disclaimer: I am the author). sporto / hop also has analysis tools, but it has not yet been ported to 0.17.
Otherwise, Elm is already efficient at work, it's just a few mmm!
In this example, I added the effect of a bizarre transition to illustrate my point: if you implement routing yourself, you get more options for a specific behavior.
Note: browser history is currently being processed with ports, but it will> be easy to update when Elm bindings are ready.