chore: Formalize 'route walkers' a little more #3221
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Back in #3151 we introduced the concept of 'route walkers'. These walk over every single route in your entire routing tree, giving you the opportunity to mutate or otherwise tweak a piece of routing config from The Outside.
When we made #3151, we noted we'd added the 'route walker' concept plus 2 walkers at our 'vue' level (i.e. in our
vue
module), even though the 2 walkers are specific to ourapplication
module.This PR splits the concept and the application level implementations using a
$.routeWalkers
dependency injection label.This means we can dynamically add/remove different routeWalkers at the service container level, which will be very useful moving forwards.
I also added one more walker than automatically adds a 'props.routeName' property to all route components. You will still need to use
defineProps{ routeName: string}()
in order to access it, but at least you no longer need to manually add repetitive routing configuration to do this.