LoginSignup
6
8

More than 3 years have passed since last update.

Svelteで複数のページを管理する ~SPA~

Last updated at Posted at 2020-12-07

概要

最近触ったSvelteで複数のページを管理したいときはどうすればいいのか調べて理解したことをまとめてみました

「SPA」=「Single Page Application」を最近知りました😇

準備

spaの実装に必要なライブラリをインストールします

npm install svelte-spa-router

作るもの

spaの実装の仕方を理解するためにごく簡単なものを作ります

トップページ

Screen Shot 2020-12-07 at 21.18.01.png

helloの部分をクリックすると

Screen Shot 2020-12-07 at 21.19.50.png

「Hello,」のみが表示されてパスが「/」→「/#/hello」に変わる

実装 ~コンポーネント~

コンポーネントで意識するのは

  • svelte-spa-routerpushをimportして
  • 画面遷移をさせたいイベントでpushを呼び出す
  • pushの引数には遷移時のパス(「/#/hello」の「/hello」にあたる部分)を指定する

作るコンポーネントは

  • Hello:「Hello,」を表示
  • Svelte:「Svelte!」を表示
  • Home:「Hello, Svelte!」を表示(HelloとSvelteコンポーネントの表示)
Hello.svelte
<script>
    import { push } from 'svelte-spa-router'
</script>

<div on:click={() => push('/hello')}>Hello,</div>
Svelte.svelte
<script>
    import { push } from 'svelte-spa-router'
</script>

<div on:click={() => push('/svelte')}>Svelte !</div>
Home.svelte
<script>
    import Hello from "./Hello.svelte";
    import Svelte from "./Svelte.svelte";
</script>

<Hello/><Svelte/>

実装 ~ルーティング~

ルーティングはApp.svelteで実装してみます

実装ポイントは

  • パスとコンポーネントのmapを作成し(ここでいうroutes)
  • Routerタグにroutesプロパティとして引き渡す
App.svelte
<script>
    import Router from 'svelte-spa-router'
    import Home from "./components/Home.svelte";
    import Hello from "./components/Hello.svelte";
    import Svelte from "./components/Svelte.svelte";

    const routes = {
        '/': Home,
        '/hello': Hello,
        '/svelte': Svelte,
        '*': Home
    };
</script>

<Router routes={routes}/>

これで完成!!!🙌 🙌 🙌

6
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8