Vue3のルーティング機能の詳細解説:SPAアプリケーションのルーティングジャンプを実現するアプリケーション

WBOY
リリース: 2023-06-18 14:44:58
オリジナル
1312 人が閲覧しました

フロントエンド テクノロジの継続的な開発により、シングル ページ アプリケーション (SPA) がフロントエンド開発の主流となり、ルーティングは SPA アプリケーションの不可欠な部分となっています。 Vue3 では、ルーティング機能が更新および改善され、より使いやすく、より強力になりました。この記事では、Vue3 でのルーティング関数の応用と、SPA アプリケーションでのルーティング ジャンプの実装方法を詳しく紹介します。

1. Vue3 のルーティング機能

Vue3 のルーティング ジャンプはすべて「ルート ナビゲーション機能」と呼ばれるルーティング機能によって行われます。基本的な使い方は次のとおりです。

const router = createRouter({
  history: createWebHashHistory(),
  routes: [
    {
      path: '/home',
      component: Home
    },
    {
      path: '/about',
      component: About
    },
    {
      path: '/contact',
      component: Contact
    }
  ]
})

router.push('/home')
ログイン後にコピー

ルートジャンプは、router.push()関数を呼び出してジャンプ先のパスを指定することで実現できます。このうち、createRouter() 関数はルーターの作成に使用され、history パラメーターはルーティング モードを指定し、routes パラメーターはルーティング パスとコンポーネント間のマッピング関係を定義します。

2. ルート ガードの実装

実際の開発では、ルート ジャンプを制限および制御する必要がある場合があります。このとき、Vue3で提供されているルートガード(Route Guard)を利用することができます。ルート ガードは、ルートがジャンプしようとしているときに呼び出される関数です。この機能内で判断・処理することで経路制御を実現します。 Vue3 は次のルート ガード関数を提供します:

2.1 beforeEach

この関数は各ルート ジャンプの前に呼び出されます。true を返すとジャンプを続行することを意味し、false を返すとキャンセルすることを意味します。この機能ではログイン認証や権限判定などを行うことができます。

router.beforeEach((to, from, next) => {
  // to: 即将要跳转的路由
  // from: 当前页面正要离开的路由
  // next: 控制路由是否可以跳转的函数

  const loggedIn = localStorage.getItem('user')

  if (to.matched.some(record => record.meta.requiresAuth) && !loggedIn) {
    next('/login')
  } else {
    next()
  }
})
ログイン後にコピー

2.2 beforeRouteEnter

この関数はコンポーネント内でのみ使用できます。この関数は、コンポーネントがまだ作成されていないときに呼び出されます。この関数内でコンポーネントのインスタンスを取得し、取得後に操作することができます。

export default {
  beforeRouteEnter(to, from, next) {
    axios.get('/user').then(response => {
      if (response.data.isAdmin) {
        next()
      } else {
        next('/403')
      }
    })
  }
}
ログイン後にコピー

2.3 beforeRouteUpdate

この関数は、ルートがジャンプした後、現在のコンポーネントがまだ再利用されているときに呼び出されます。この関数でコンポーネントのデータを更新できます。

export default {
  beforeRouteUpdate(to, from, next) {
    const id = to.params.id
    axios.get(`/user/${id}`).then(response => {
      this.user = response.data
      next()
    })
  }
}
ログイン後にコピー

3. 動的ルーティングの実装

ルーティング ジャンプ時に動的にルーティング パスを生成する必要がある場合があります。 Vue3では「ダイナミックルート」機能を提供しています。動的ルーティングは、ルーティング パスに「:」で始まるプレースホルダーを追加することによって実装されます。

const router = createRouter({
  history: createWebHashHistory(),
  routes: [
    {
      path: '/user/:id',
      component: User
    }
  ]
})
ログイン後にコピー

上記の例では、「:id」プレースホルダーを通じてルーティング パスの動的な生成を実現しました。ジャンプをルーティングするとき、to.params.id を介してパス内の ID 値を取得できます。

router.push({ path: `/user/${userId}` })
ログイン後にコピー

4. ネストされたルーティングを実装する

複雑なページの場合、ネストされたルーティングを実装する必要がある場合があります。 Vue3 は、ネストされたルーティングのサポートも提供します。親ルートとサブルートにサブルートを定義することで、ネストされたルーティングを実装できます。

const router = createRouter({
  history: createWebHashHistory(),
  routes: [
    {
      path: '/home',
      component: Home,
      children: [
        {
          path: 'list',
          component: List
        },
        {
          path: 'detail/:id',
          component: Detail
        }
      ]
    }
  ]
})
ログイン後にコピー

上の例では、ホーム ルートに list とdetailという 2 つのサブルートを定義しました。 List コンポーネントでは、$route オブジェクトの Children 属性を通じてサブルート情報を取得できます。

export default {
  created() {
    console.log(this.$route.children) // [ { path: 'list', ... }, { path: 'detail/:id', ... } ]
  }
}
ログイン後にコピー

5. 概要

Vue3 では、ルーティング機能は SPA アプリケーションを実装するための鍵の 1 つです。ルーティング機能を通じて、ルーティング ジャンプ、ルーティング ガード、ダイナミック ルーティング、ネストされたルーティング、その他の機能を実装できます。開発者にとって、ルーティング機能の使用を習得することは非常に重要なステップであり、フロントエンドの開発能力を向上させる唯一の方法でもあります。

以上がVue3のルーティング機能の詳細解説:SPAアプリケーションのルーティングジャンプを実現するアプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート