ホームページ ウェブフロントエンド フロントエンドQ&A vue ルーティングをインターセプトするいくつかの方法

vue ルーティングをインターセプトするいくつかの方法

May 23, 2023 pm 06:33 PM

フロントエンド テクノロジの継続的な開発に伴い、vue フレームワークは開発者の間でますます支持されています。 Vue プロジェクトを開発する場合、ルーティングは非常に重要なコンポーネントです。ルーティングにより、シングル ページ アプリケーション (SPA) のページ切り替えやコンポーネントの再利用が実現され、プロジェクトのパフォーマンスとユーザー エクスペリエンスが向上します。プロジェクトのセキュリティと信頼性を確保するには、不正なリクエストをブロックまたはリダイレクトするインターセプターをルーティングに追加する必要があります。この記事では、Vue ルーティング インターセプトの原理と実装方法をすぐに理解できるように、Vue ルーティング インターセプトのいくつかの方法を紹介します。

  1. グローバル フロント ガード

Vue Router は、ルーティングの切り替え前にリクエストをインターセプトできるグローバル フロント ガードを提供します。グローバル プレガードを使用すると、ユーザーがログインしているかどうかを確認したり、ユーザーがページにアクセスする権限を持っているかどうかを確認したりできます。次のコードを router/index.js に追加します。

1

2

3

4

5

6

7

8

router.beforeEach((to, from, next) => {

  const isLogin = localStorage.getItem('token') ? true : false;

  if (to.path == "/login") {

    next();

  } else {

    isLogin ? next() : next('/login');

  }

})

ログイン後にコピー

このコード スニペットは、各ルートが切り替わる前に実行され、ユーザーがログインしているかどうかが判断されます。ログインしていない場合は、ログイン ページにジャンプします。これは非常に一般的なグローバル ルート インターセプト方法であり、ユーザーのセキュリティとシステムの安定性を効果的に確保できます。

  1. ルート排他的ガード

Vue Router では、ルートごとに個別のガードを設定できます。このタイプのガードはルート排他的ガードと呼ばれます。ルート排他的ガードは、ルート パラメーターの確認、非同期インターフェイスの呼び出し、データの処理などに使用できます。次のコードを router/index.js に追加します:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

const router = new VueRouter({

  routes: [

    {

      path: '/example/:id',

      component: Example,

      beforeEnter: (to, from, next) => {

        const id = to.params.id;

        if (id > 0 && id < 100) {

          next();

        } else {

          next('/error');

        }

      }

    }

  ]

})

ログイン後にコピー

このコード スニペットは、ルート /example/:id の切り替え前に実行されます。渡されたパラメーター ID が条件を満たしているかどうかを確認し、満たしている場合はジャンプします。 「/error」ページに移動するか、そうでない場合はルーティングの切り替えを続行します。経路排他ガードは、より柔軟に経路切り替えを制御できる非常に柔軟な経路遮断方式です。

  1. グローバル ポスト フック

グローバル フロント ガードと同様に、Vue Router はルーティング切り替え後の応答を傍受できるグローバル ポスト フックも提供します。グローバル ポスト フックは、ページ統計やエラー処理など、ルーティング切り替え後のいくつかの論理的な問題を処理するために使用できます。次のコードを router/index.js に追加します。

1

2

3

4

5

router.afterEach(( to, from ) => {

  const currentPath = to.path;

  const params = to.params;

  console.log(`切换到${currentPath}页面,路由参数为${JSON.stringify(params)}`)

})

ログイン後にコピー

このコード スニペットは、各ルーティング スイッチの後に実行され、現在のルーティング ページのパスとパラメーターを出力します。グローバル ポスト フックを通じて、ルーティング ステータスと、プロジェクトの開発とテストの次のステップに対応する結果をよりよく理解できます。

概要:

Vue Router では、ルート インターセプトはシステムの信頼性、セキュリティ、安定性を強化するために使用できる非常に重要なコンポーネントです。グローバル フロント ガード、ルート専用ガード、およびグローバル ポスト フックを通じて、ルートのステータスと動作をより適切に制御できます。実際の開発プロセスでは、プロジェクトの全体的な品質とユーザー エクスペリエンスを確保するために、プロジェクトの実際の状況に基づいて適切なルート インターセプト方法を選択する必要があります。

以上がvue ルーティングをインターセプトするいくつかの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

怠zyなロードの概念を説明してください。 怠zyなロードの概念を説明してください。 Mar 13, 2025 pm 07:47 PM

怠zyなロードの概念を説明してください。

UseEffectとは何ですか?副作用を実行するためにどのように使用しますか? UseEffectとは何ですか?副作用を実行するためにどのように使用しますか? Mar 19, 2025 pm 03:58 PM

UseEffectとは何ですか?副作用を実行するためにどのように使用しますか?

React和解アルゴリズムはどのように機能しますか? React和解アルゴリズムはどのように機能しますか? Mar 18, 2025 pm 01:58 PM

React和解アルゴリズムはどのように機能しますか?

JavaScriptでカリーはどのように機能し、その利点は何ですか? JavaScriptでカリーはどのように機能し、その利点は何ですか? Mar 18, 2025 pm 01:45 PM

JavaScriptでカリーはどのように機能し、その利点は何ですか?

各ライフサイクル方法の目的とそのユースケースを説明します。 各ライフサイクル方法の目的とそのユースケースを説明します。 Mar 19, 2025 pm 01:46 PM

各ライフサイクル方法の目的とそのユースケースを説明します。

JavaScriptの高次関数とは何ですか?また、より簡潔で再利用可能なコードを書くためにどのように使用できますか? JavaScriptの高次関数とは何ですか?また、より簡潔で再利用可能なコードを書くためにどのように使用できますか? Mar 18, 2025 pm 01:44 PM

JavaScriptの高次関数とは何ですか?また、より簡潔で再利用可能なコードを書くためにどのように使用できますか?

Reactのパフォーマンス最適化手法(メモ化、コード分割、怠zyな読み込み)とは何ですか? Reactのパフォーマンス最適化手法(メモ化、コード分割、怠zyな読み込み)とは何ですか? Mar 18, 2025 pm 01:57 PM

Reactのパフォーマンス最適化手法(メモ化、コード分割、怠zyな読み込み)とは何ですか?

usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか? usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか? Mar 19, 2025 pm 03:59 PM

usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか?

See all articles