このセクションでは、Vueルーター内の高度なルーティング技術の実装を掘り下げ、動的ルート、ネストされたルート、ルートガードを網羅しています。各側面を個別に分解しましょう。
動的ルート:動的ルートでは、パラメーターを受け入れるルートを定義できます。これは、URLに基づいて異なるデータを表示する再利用可能なコンポーネントを作成するのに非常に役立ちます。たとえば、ブログ投稿ページは動的なルートを使用して、IDに基づいてさまざまな投稿を表示する場合があります。コロン( :
に続いてパラメーター名を使用して、ルートパスで動的セグメントを定義します。例えば:
<code class="javascript">const routes = [ { path: '/blog/:id', name: 'BlogPost', component: BlogPost, props: true // Pass the route parameters as props to the component } ];</code>
この例では、 :id
は動的セグメントです。ユーザーが/blog/123
にナビゲートすると、 BlogPost
コンポーネントはPropとしてid: '123'
を受信します。コンポーネント内のこの小道具にアクセスして、対応するブログ投稿を取得して表示できます。また、正規表現を使用して、より複雑なパラメーターマッチングを定義することもできます。たとえば、 path: '/product/:id([0-9] )'
ルートのみを数値IDと一致させます。
ネストされたルート:ネストされたルートを使用すると、アプリケーションのナビゲーションの階層構造を作成できます。これは、多くのページで複雑なアプリケーションを整理するのに特に役立ちます。親ルートのchildren
財産内のネストされたルートを定義します。例えば:
<code class="javascript">const routes = [ { path: '/users', component: Users, children: [ { path: '', // Default child route, matches '/users' name: 'UserList', component: UserList }, { path: ':id', name: 'UserDetail', component: UserDetail } ] } ];</code>
これにより、 /users
path: /users
(ユーザーのリストを表示)および/users/:id
(特定のユーザーの詳細を表示する)の2つのルートが作成されます。この構造は、ルートを整理し続け、保守性を向上させます。
ルートガード:ルートガードは、アプリケーションのナビゲーションを制御できる機能です。ルートがアクティブになる前に呼び出され、認証、承認、データフェッチなどのタスクを実行するために使用できます。 Vue Routerはいくつかのタイプのガードを提供しています:
beforeRouteEnter
:ルートコンポーネントが作成される前に呼び出されます。これは、コンポーネントがレンダリングする前にデータを取得するのに役立ちます。beforeRouteUpdate
:ルートコンポーネントが異なるパラメーターで再利用されるときに呼び出されます。beforeRouteLeave
:ルートコンポーネントが非アクティブ化される前に呼び出されます。これは、救われていない変更を確認するのに役立ちます。beforeEach
(グローバルガード):すべてのルートに適用されるグローバルガード。認証のためのbeforeEach
Guardの例の例:
<code class="javascript">router.beforeEach((to, from, next) => { const requiresAuth = to.matched.some(record => record.meta.requiresAuth); const isAuthenticated = !!localStorage.getItem('token'); // Check for authentication token if (requiresAuth && !isAuthenticated) { next('/login'); // Redirect to login page } else { next(); // Proceed to the route } });</code>
複雑なルート構成を管理するには、慎重に計画と組織が必要です。ここにいくつかのベストプラクティスがあります:
ルートガードは、アクセスフローとナビゲーションフローを制御するために不可欠です。それらは、認証、承認、およびその他のナビゲーション関連のロジックを実装するための集中メカニズムを提供します。ルートガードの効果的な使用には、
このセクションでは、動的およびネストされたルートを実装する具体的な例を提供します。
動的ルートの例:
<code class="vue">// routes.js const routes = [ { path: '/product/:id', name: 'ProductDetail', component: ProductDetail } ]; // ProductDetail.vue <template> <div> <h1>Product {{ $route.params.id }}</h1> </div> </template></code>
この例は、 id
パラメーターに基づいて製品の詳細を表示する動的ルートを示しています。
ネストされたルートの例:
<code class="vue">// routes.js const routes = [ { path: '/admin', component: Admin, children: [ { path: 'users', component: AdminUsers }, { path: 'products', component: AdminProducts } ] } ];</code>
これにより/admin
パスの下にあるネストされたルートが定義されます。 /admin/users
にナビゲートすると、 AdminUsers
コンポーネントがレンダリングされ、 /admin/products
AdminProducts
をレンダリングします。ネストされたルートは親の経路を継承することを忘れないでください。 $route
を使用してコンポーネントにこれにアクセスします。たとえば、 AdminUsers
内では、 this.$route.path
/admin/users
になります。
以上がVUEルーター(動的ルート、ネストされたルート、ルートガード)を使用して高度なルーティングテクニックを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。