Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/EmilTholin/svelte-routing
A declarative Svelte routing library with SSR support
https://github.com/EmilTholin/svelte-routing
Last synced: 1 day ago
JSON representation
A declarative Svelte routing library with SSR support
- Host: GitHub
- URL: https://github.com/EmilTholin/svelte-routing
- Owner: EmilTholin
- License: mit
- Created: 2017-11-28T19:38:55.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-07-25T20:53:55.000Z (4 months ago)
- Last Synced: 2024-10-29T15:04:32.405Z (10 days ago)
- Language: JavaScript
- Homepage:
- Size: 125 KB
- Stars: 2,025
- Watchers: 21
- Forks: 180
- Open Issues: 39
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-svelte - Svelte Routing - Uma biblioteca para criar rotas com suporte a SSR. (Roteamento / Comunidade Global)
- awesome-svelte - svelte-routing - A declarative Svelte routing library with SSR support. (Routers / Internationalization)
README
[![npm][npm]][npm-url]
# Svelte Routing
A declarative Svelte routing library with SSR support.
[[CHANGELOG][changelog-url]]
## Install
```bash
npm i -D svelte-routing
```## Usage
```html
import { Router, Link, Route } from "svelte-routing";
import Home from "./routes/Home.svelte";
import About from "./routes/About.svelte";
import Blog from "./routes/Blog.svelte";export let url = "";
Home
About
Blog
```
```javascript
// main.js
import App from "./App.svelte";const app = new App({
target: document.getElementById("app"),
});
```## API
#### `Router`
The `Router` component supplies the `Link` and `Route` descendant components
with routing information through context, so you need at least one `Router` at
the top of your application. It assigns a score to all its `Route` descendants
and picks the best match to render.`Router` components can also be nested to allow for seamless merging of many
smaller apps.###### Properties
| Property | Required | Default Value | Description |
| :--------------: | :------: | :-----------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `basepath` | | `"/"` | The `basepath` property will be added to all the `to` properties of `Link` descendants and to all `path` properties of `Route` descendants. This property can be ignored in most cases, but if you host your application on e.g. `https://example.com/my-site`, the `basepath` should be set to `/my-site`. |
| `url` | | `""` | The `url` property is used in SSR to force the current URL of the application and will be used by all `Link` and `Route` descendants. A falsy value will be ignored by the `Router`, so it's enough to declare `export let url = "";` for your topmost component and only give it a value in SSR. |
| `viewtransition` | | `null` | View Transition (Experimental) |#### `Link`
A component used to navigate around the application.
###### Properties
| Property | Required | Default Value | Description |
| :--------------: | :------: | :-----------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `to` | ✔ ️ | `"#"` | URL the component should link to. |
| `replace` | | `false` | When `true`, clicking the `Link` will replace the current entry in the history stack instead of adding a new one. |
| `state` | | `{}` | An object that will be pushed to the history stack when the `Link` is clicked. |
| `getProps` | | `() => ({})` | A function that returns an object that will be spread on the underlying anchor element's attributes. The first argument given to the function is an object with the properties `location`, `href`, `isPartiallyCurrent`, `isCurrent`. |
| `preserveScroll` | | `false` | When `true`, clicking the `Link` will not scroll the page to the top. |#### `Route`
A component that will render its `component` property or children when its
ancestor `Router` component decides it is the best match.All properties other than `path` and `component` given to the `Route` will be
passed to the rendered `component`.Potential path parameters will be passed to the rendered `component` as
properties. A wildcard `*` can be given a name with `*wildcardName` to pass the
wildcard string as the `wildcardName` property instead of as the `*` property.Potential path parameters are passed back to the parent using props, so they can
be exposed to the slot template using `let:params`.```html
```
The active status of link can be exposed to the slot template using
`let:active`.```html
Browser
```
###### Properties
| Property | Required | Default Value | Description |
| :---------: | :------: | :------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `path` | | `""` | The path for when this component should be rendered. If no `path` is given the `Route` will act as the default that matches if no other `Route` in the `Router` matches. |
| `component` | | `null` | The component constructor that will be used for rendering when the `Route` matches. If `component` is not set, the children of `Route` will be rendered instead. |#### `navigate`
A function that allows you to imperatively navigate around the application for
those use cases where a `Link` component is not suitable, e.g. after submitting
a form.The first argument is a string denoting where to navigate to, and the second
argument is an object with a `replace`, `state` and `preserveScroll` properties equivalent to those
in the `Link` component.```html
import { navigate } from "svelte-routing";
function onSubmit() {
login().then(() => {
navigate("/success", { replace: true });
});
}```
#### `link`
An action used on anchor tags to navigate around the application. You can add an
attribute `replace` to replace the current entry in the history stack instead of
adding a new one and `preserveScroll` to not scroll the page to the top when clicked.```html
import { link } from "svelte-routing";
```
#### `links`
An action used on a root element to make all relative anchor elements navigate
around the application. You can add an attribute `replace` on any anchor to
replace the current entry in the history stack instead of adding a new one.
You can add an attribute `preserveScroll` on any anchor to not to scroll the page to the top when clicked. You
can add an attribute `noroute` for this action to skip over the anchor and allow
it to use the native browser action.```html
import { links } from "svelte-routing";
```#### `viewtransition`
Viewtransition for navigation (Experimental).
_`builtin transition`_
```html
import { fade } from "svelte/transition";
// ...
```
_`custom transition`_
```html
import { cubicin } from "svelte/easing";
// ...
```
# License
This project is licensed under the [**MIT**](LICENSE).
# Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for this project by you, shall be licensed as **MIT**, without any additional
terms or conditions. [**Code of Conduct**](CODE_OF_CONDUCT.md).[npm]: https://img.shields.io/npm/v/svelte-routing.svg
[npm-url]: https://npmjs.com/package/svelte-routing
[changelog-url]: https://github.com/EmilTholin/svelte-routing/blob/master/CHANGELOG.md