🚨 Disclaimer: Routify 3 is currently in Release Candidate stage.
Please be aware that while the documentation is comprehensive, it may contain inaccuracies or errors. The codebase is also subject to changes that could affect functionality. We appreciate your understanding and welcome any feedback or contributions.
guide
Introduction
Navigation
Basics
<a href="/blog">Blog</a>
Routify works with native <a>
anchors* and history.pushState
/history.replaceState
.
However, Routify will not intercept:
- links to external domains.
- anchors with a
target
attribute. - links outside of Routify’s pages, layouts or modules.
To bypass Routify for programmatic navigation, please use history.pushStateNative
and history.replaceStateNative
.
Writing URLs
URLs can be written manually or with the $url
helper.
$url('/blog/[slug]/comments', {slug: 'welcome', sort: 'descending'})
// outputs /blog/welcome/comments?sort=descending
For more information, please see $url
Generating URLs from file structure
Routify lets you iterate over nodes (files) in your project.
<script>
import { isActive } from '@roxi/routify'
export let node
export let nested = 0
</script>
<ul>
<!-- iterate over each child of the provided node -->
{#each node.children.indexed as child (child.path)}
<li>
<a href={child.path} class:active={$isActive(child.path)}>{child.name}</a>
<!-- if the node is active and has children,
show them by nesting a new instance of this component in itself.
We could also use the `nested` count to limit the recursive depth. -->
{#if $isActive(child.path) && child.children.indexed.length}
<svelte:self node={child} nested={nested + 1} />
{/if}
</li>
{/each}
</ul>
Hint: To retrieve a node, please refer to nodes.
Helpers
$url (path, params, options)
The url helper resolves pages relative to the file in which the helper is used. This is different from native relative URLs which are relative to the current path in the browser’s address bar.