DEV Community

nabbisen
nabbisen

Posted on • Originally published at scqr.net

Vue で SPA - ルーティング

現代の Web アプリの多くは SPA (エスピーエー、Single Page Application) と呼ばれる形式で作られています。これは、ページ遷移してもブラウザの再読み込みがなく、スムーズなユーザー体験を提供するアプリのことです。

異なる「ページ」への URL の切替え

SPA において、異なる「ページ」への URL の切替えや、それに応じたコンポーネントの表示を管理するのが ルーティング (routing) ライブラリ です。

ルーティング (routing)

Vue では公式のルーティングライブラリとして Vue Router (vue-router) が広く使われています。

URL 切替えと Vue ルーティング

+-------------------------------------------------------+ | Web / アプリ サーバー | +-------------------------------------------------------+ ^ | Vue Router 管轄外の場合、 | サーバーリクエスト | +-------------------------------------------------------+ | ブラウザ (SPA) | +-------------------------------------------------------+ | URL: example.com/ URL: example.com/about | | | | +--------------------+ +--------------------+ | | | HomeView | | AboutView | | | | コンポーネント | | コンポーネント | | | +--------------------+ +--------------------+ | | ^ ^ | | | (コンポーネント表示) | | | +---------------+---------------+ | | | <router-view> | | | +---------------+---------------+ | | ^ | | | | | (ルーティングの決定) | | +---------------+---------------+ | | | Vue Router | | | +-------------------------------+ | | ^ | | | | | (URL 切替え リクエスト) | +-------------------------------------------------------+ 
Enter fullscreen mode Exit fullscreen mode

Vue Router を使ってみよう

  1. インストール: プロジェクトに Vue Router をインストールします。

    npm install vue-router 
  2. ルーターの定義: router/index.js のようなファイルで、どのURLでどのコンポーネントを表示するかを定義します。

    // router/index.js import { createRouter, create Web History } from 'vue-router' import HomeView from '../views/HomeView.vue' import AboutView from '../views/AboutView.vue' const routes = [ { // ルートパス (トップページ) path: '/', name: 'home', component: HomeView }, { // /about パス path: '/about', name: 'about', component: AboutView } ] const router = createRouter({ // HTML 5 History モードを使用 history: create Web History(), routes }) export default router 
  3. Vue アプリへの組み込み: main.js などのエントリーポイントで、Vue アプリにルーターを組み込みます。

    // main.js import { createApp } from 'vue' import App from './App.vue' // ルーターをインポート import router from './router' const app = createApp(App) // ルーターをアプリに適用 app.use(router) app.mount('#app') 
  4. コンポーネントでの使用

    <router-link>

    • クリックするとページ遷移するリンクを作成します。HTML の <a> タグに似ていますが、SPA の内部遷移を担います。

      <template> <nav> <router-link to="/">Home</router-link> | <router-link to="/about">About</router-link> </nav> </template> 

    <router-view>

    • 現在の URL に対応するコンポーネントが描画される場所です。

      <template> <router-view></router-view> </template> 

Vue Router を使うことで、複数の「画面」を持つ SPA を効率的に構築できます。

Top comments (3)

Collapse
 
nevodavid profile image
Nevo David

pretty cool seeing this all laid out so simple - always makes me wonder if building a perfect router setup comes from trial and error or just reading docs over and over

Collapse
 
nabbisen profile image
nabbisen

Thanks !!! You are a diligent thinker. I don't know the answer and make effort to handle the balance between writing trial code which often causes errors and reading docs, with joy of learning 😁

Some comments may only be visible to logged-in visitors. Sign in to view all comments.