0.0.6 • Published 5 years ago

@joxtacy/svelte-router v0.0.6

Weekly downloads
6
License
MIT
Repository
github
Last release
5 years ago

svelte-router

This is a very simple router for single page applications written in Svelte.

Install

npm install @joxtacy/svelte-router

Usage

Below is a short example on how to use the router.

<script>
import { Link, Route, Router } from "@joxtacy/svelte-router";
</script>

<Router>
    <Link to={"/"}>
        <h2>Home</h2>
    </Link>
    <Link to={"/foo"}>
        <h2>foo</h2>
    </Link>
    <Route exact path={"/"}>
        <h2>This is home</h2>
    </Route>
    <Route path={"/foo"}>
        <h2>Bar</h2>
    </Route>
</Router>

API

Router

This component provides context based routing for the Link and Route component and must be used to wrap those components. It does not take any properties.

Route

This component is used to render a component or some markup when its path matches the url. It takes a prop called path which is the path that when matched the Route will render.

PropRequiredDefaultDescription
pathno"/"The path relative to the origin that the Route component will listen to.
exactnofalseTrue if it should match on the exact path only.
componentnoundefinedThe component to be rendered.

Examples

With general markup:

<Route path={"/some-path"}>
    <!-- Markup goes here -->
</Route>

With a Svelte component:

<script>
import SvelteComponent from "./svelte-component.svelte";
</script>

<Route path={"/some-path"} component={SvelteComponent}/>

Link

This component is used to change the url. It takes one prop called to and is a relative path to your window.location.origin.

PropRequiredDefaultDescription
tono"/"The path relative to window.location.origin

Example

<Link to={"/some-path"}>
    <!-- Markup goes here -->
</Link>

Know limitations

  • You need to specify the Route components with the most specific path on top, like in the example below. Otherwise the top most one would be rendered on all sub paths as well.

Good example ✅

The most specific path is on top and will not be rendered on /foo.

<script>
import { Link, Route, Router } from "@joxtacy/svelte-router";
</script>

<Router>
    <Link to={"/"}>
        <h2>Home</h2>
    </Link>
    <Link to={"/foo"}>
        <h2>foo</h2>
    </Link>
    <Link to={"/foo/bar"}>
        <h2>foobar</h2>
    </Link>
    <Route exact path={"/"}>
        <h2>This is home</h2>
    </Route>
    <Route path={"/foo/bar"}>
        <h2>Foobar</h2>
    </Route>
    <Route path={"/foo"}>
        <h2>Foo</h2>
    </Route>
</Router>

Bad example ❌

Here the /foo path would also be rendered when the url is /foo/bar.

<script>
import { Link, Route, Router } from "@joxtacy/svelte-router";
</script>

<Router>
    <Link to={"/"}>
        <h2>Home</h2>
    </Link>
    <Link to={"/foo"}>
        <h2>foo</h2>
    </Link>
    <Link to={"/foo/bar"}>
        <h2>foobar</h2>
    </Link>
    <Route exact path={"/"}>
        <h2>This is home</h2>
    </Route>
    <Route path={"/foo"}>
        <h2>Foo</h2>
    </Route>
    <Route path={"/foo/bar"}>
        <h2>Foobar</h2>
    </Route>
</Router>
  • It does not handle variables in the path.

  • You can only have one Router in your app.

Feature requests

If you have any feature requests just hit me up or place an issue on the Github repo!

0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago