Routing in Taxi is used to choose which Transition to choose when a user performs a navigation.
They are defined via the
addRoute method, and consist of a regex to run against the current URL, a regex to run against the new URL after the navigation, and the transition to use if matched.
Here are a few examples:
// Transition from a blog page to the homepage taxi.addRoute('/blog/.*', '/', 'blogToHome') // Transition the homepage to any other page taxi.addRoute('/', '.*', 'fromHome') // Transition from the about page, to the contact page taxi.addRoute('/about', '/contact', 'aboutToContact')
Please note: Your regex is wrapped inside
$ automatically, so a regex of
/api will match
/api but not
/v2/api. Keep this in mind when adding routing rules!
They are also run as
RegExp so there's no need to escape slashes. 👊
Suck at regular expressions? Start here: RegEx help for newbies
Routes are tested in the same order they are declared, and as soon as a match is found, that transition is chosen.
Lost? Well consider the following:
// bad taxi.addRoute('/pages/.*', '/', 'somethingElse') taxi.addRoute('/pages/specific', '/', 'something') // good taxi.addRoute('/pages/specific', '/', 'something') taxi.addRoute('/pages/.*', '/', 'somethingElse')
In the above example, if the user was navigating from
/pages/specific to the homepage, only the second example would match and run the "something" transition.
This is because the first example registers the catch-all before the specific rule, so the specific one is never reached.