LoginSignup
0
1

More than 3 years have passed since last update.

Vue ノート(3):SPAとVueルーター

Last updated at Posted at 2020-04-07

サーバー側とクライアント側のルーティング

1.サーバー側ルーティング
クライアントはURLが変更されるたびにサーバーにリクエストを送信するため、これを「サーバー側ルーティング」と呼びます。

2.クライアント側ルーティング
ルーティングはJavaScriptを使用してブラウザー自体で行われます。Webページは1つのindex.htmlページから読み込まれ、クライアント側のルーティングを使用して、クリックされたリンクに応じて、さまざまなビューを動的に表示できます。多くの場合、表示する必要のあるビューはすでにブラウザーにロードされているため、サーバーにアクセスする必要はありません。

3.単一ページのアプリケーション(SPA)
1つのHTMLをロードして,ユーザーインタラクションに応じて動的にページを更新するWebアプリケーションです。ただし、単一ページアプリケーションを使用している場合は、コンテンツ間を移動する方法(クライアント側ルーティング)が必要です。

Vueルーター

配置場所:

/router/index.js


import Vue from "vue";
import VueRouter from "vue-router";
import Home from "../views/Home.vue";

Vue.use(VueRouter);

const routes = [
  {
    //URLの観点から、実際のルートを示します
    path: "/",
    //ルートを参照するためにアプリケーション全体でその名前を使用する
    name: "Home",
    //ルートでレンダリングするためにどのコンポーネントを指定する
    component: Home
  },
  {
    path: "/about",
    name: "About",
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () =>
      import(/* webpackChunkName: "about" */ "../views/About.vue")
  }
];

App.vue

<router-link></router-link>

router-link: 特定のルートにリンクすることを目的とする(vue-routerライブラリの)コンポーネントです。そして本質的には、コンポーネントのコンテンツがページにレンダリングされるプレースホルダーです。

router-view: router-linkで指定されたコンポーネントが表示されている場所に読み込まれます。
例えば、リンク/aboutをクリックしたら、views/App.vueの内容が「router-view」のところに表示されます


<template>
  <div id="app">
    <div id="nav">
      <router-link :to="{name:'Home'}">Home</router-link>
      <router-link :to="{name:'About'}">About</router-link>
    </div>
    <router-view />
  </div>
</template>

redirectとエイリアス

要件:/aboutを/about-usへ変更しましたが、/aboutで同じく変更前のコンテンツにアクセスするできるようにしたい。

ソリューション1:redirect


  {
    path: "/about-us",
    name: "About",
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () =>
      import(/* webpackChunkName: "about" */ "../views/About.vue")
  },
  {
    path:"/about",
    redirect:{name:"About"}
  }

ソリューション2:エイリアス


{
    path: '/about-us',
    name: 'About',
    component: About,
    alias:'/about'
  }

ユーザーは/aboutと/about-usに移動すると、同じコンテンツを取得したりできます。

0
1
0

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
0
1