Vue-Routerのルート設定の詳しい説明

Vue-Routerのルート設定の詳しい説明

導入

vue-router を使用するプロジェクトでは、VueRouter のインスタンス化は、その構成オプション ルートです。このオプションは、ルーティングとビュー コンポーネントの関係、またはルーティングと他のルーティングの関係を指定します。ルーター構成オプションは、最も重要な構成です。

ルート内のオブジェクト属性

インターフェース RouteConfig = {
  パス: 文字列、
  コンポーネント?: コンポーネント、
  name?: string, // 名前付きルート *components?: { [name: string]: Component }, // 名前付きビューコンポーネント https://router.vuejs.org/zh/guide/essentials/named-views.html#%E5%B5%8C%E5%A5%97%E5%91%BD%E5%90%8D%E8%A7%86%E5%9B%BE
  リダイレクト?: 文字列 | 場所 | 機能、
  プロパティ?: ブール値 | オブジェクト | 関数、
  エイリアス?: 文字列 | 配列<文字列>,
  children?: Array<RouteConfig>, // ネストされたルート beforeEnter?: (to: Route, from: Route, next: Function) => void,
  *メタ?: 任意、
  // 2.6.0以上
  *caseSensitive?: boolean, // 一致ルールは大文字と小文字を区別しますか? (デフォルト値: false)
  *pathToRegexpOptions?: オブジェクト // 正規表現オプションをコンパイルする}

パス: 文字列

現在のルートのパスを指定します。ブラウザのURLがパスと一致すると、router-viewは現在のルートオブジェクトをレンダリングしてビューコンポーネントcomponent/componentsを指定します。

定数ルート = [
    {
      パス: '/'、
      コンポーネント: ホーム
    },
    {
      パス:'/user',
      コンポーネント: ユーザー
    }
  ]
  
  const ルーター = 新しい VueRouter({
    ルート
  })

Vue のルーターは、現在のパス文字列の一部として「/:プロパティ名」の形式で動的パスをサポートしていることに注意してください。この文字列ルートは、実際のURLの応答文字列情報と一致する動的ルートとして使用されます。

定数ルート = [
    {
      パス: '/'、
      コンポーネント: ホーム
    },
    {
      path:'/user/:id/:local', // 動的パス:id :local
      コンポーネント: ユーザー
    }
]
  
const ルーター = 新しい VueRouter({
    ルート、
})
//ルートジャンプ <div id="app">
    <ルータービュー />
    // 次のリンクは /user/:id/:local に一致します <router-link to="/user/007/lk">User 007</router-link>
    <router-link to="/user/111/js">ユーザー 111</router-link>
    <router-link to="/user/10086/yk">ユーザー 10086</router-link>
    <router-link to="/user/241247/la">ユーザー 241247</router-link>
</div>
/* 上記のルートにジャンプすると、対応するルート ビュー コンポーネント ユーザーは、this.$route.params を通じて動的パスに一致する情報を取得できます。例: url /user/007/lk this.$route.params -> {id:'007',local:'lk'}
      url /user/10086/yk this.$route.params -> {id:'10086',local:'yk'}
*/

this.$route は、現在の Vue アプリケーションが配置されているルートの情報オブジェクトであることに注意してください。

// http://localhost:8080/#/user/10086/cc?wd=iPhone&aa=テスト
{
    name: undefined, // 現在のルート名 *fullPath: "/user/10086/cc" // 現在の URL フルパス *hash: "" // 現在のルートのハッシュ *matched: [{…}] 
    *メタ: {}
    params: {id: "10086", local: "cc"} // 動的パスはキーと値のペアのオブジェクトと一致します *path: "/user/10086/cc" // 現在の URL に一致するパス query: { // URL のクエリ文字列? 次のパラメータから解析されたオブジェクト wd: "iPhone",
        aa: 「テスト」
    } 
}

コンポーネント: コンポーネント | () => import(コンポーネント)

現在のブラウザURLがルートパスと一致したときにレンダリングされるルートコンポーネント

'vue' から Vue をインポートします
'../views/HotMusicList' から HotMusicList をインポートします

定数ルート = [
  {
    パス: '/hot',
    コンポーネント: HotMusicList
  },
  {
    // 動的パスマッチングは、次の方法で各曲ごとに異なる ID を取得します: id
    パス: '/music/:id',
    // 関数の形式によるルートの遅延読み込みにより、プロジェクトの開始時に読み込みが許可されていないコンポーネントをプロジェクトに読み込むことができます // ブラウザーが現在のルートにジャンプしたときにのみ、ルート コンポーネントがプロジェクトに読み込まれます // これを行う利点は、不要な読み込みを減らし、アプリケーションの読み込み速度と実行帯域幅を削減することです コンポーネント: () => import('../views/MusicPlay') 
  }
]

注: プロジェクト開発において、ルーティング コンポーネントをアプリケーションの開始時にロードする必要がない場合は、遅延ロードを使用してください。

名前: 文字列

ルートに名前を付けて、名前付きルートにします。ルートナビゲーションは名前を使用してリダイレクトできます。 (ルートがロケーションナビゲーションを使用する場合、名前付きルートのみがpramasパラメータを直接受け入れることができます)

定数ルート = [
  {
    パス: '/user', 
    名前: 'ユーザー',
    コンポーネント: () => import('../views/User.vue')
  }
]

リダイレクト: 文字列 | 場所 | 機能

リダイレクト ルート。現在のアプリケーションがこのルートにアクセスして移動すると、このルートは、リダイレクトによって指定された新しいルートに自動的にリダイレクトされます (置換の形式で)。

定数ルート = [
  {
    パス: '/contact',
    コンポーネント: ContactView
  },
  {
    パス: '/user/:id', 
    名前: 'ユーザー',
    コンポーネント: () => import('../views/User.vue')
  },
  {
    パス: '/oldpath1',
    リダイレクト: '/contact'
  },
  {
    パス: '/oldpath2',
    リダイレクト: { 名前: 'ユーザー'、パラメータ: { 名前: 'シャオミン'、年齢: 19 } }
  },
  /*
      リダイレクトは、oldpath にアクセスしたときに生成される場所オブジェクトであるパラメータを受け取る関数の形式をサポートします。リダイレクト関数の形式は、リダイレクト ルートのパスまたは場所を返す必要があります。
  */
  {
    パス: '/oldpath2',
    リダイレクト:(oldpathLocation) => '/contact'
  }
  {
    パス: '/oldpath4',
    リダイレクト:(oldpathLocation) => { name: 'ユーザー', パラメータ: { name: 'シャオミン', 年齢: 19 } }
  }
]

プロパティ: ブール値 | オブジェクト | 関数

ルートの動的マッチングは、通常、 this.$route.params を通じてのみ実行でき、動的に一致した値を取得します。 props プロパティが設定されている場合、動的に一致するキーと値のペアをコンポーネントの props としてビュー コンポーネントに直接渡すことができるため、コンポーネントの結合が大幅に削減されます。

ブール値。props が true に設定されている場合、route.params 内のすべてのキーと値のペアがコンポーネントの props 属性として設定されます。

定数ルート = [
  {
    パス: '/hot',
    コンポーネント: HotMusicList
  },
  {
    // 動的パスマッチングは、次の方法で各曲ごとに異なる ID を取得します: id
    パス: '/music/:id',
    // 遅延読み込みコンポーネントのルーティング: () => import('../views/MusicPlay'), 
    プロパティ: true
  }
]
// This.$route.id はコンポーネント内から props id を通じてアクセスできます
<テンプレート>
  <div>
      曲の再生 <audio controls :src="musicUrl"/>
  </div>
</テンプレート>

<スクリプト>

エクスポートデフォルト{
  props: ['id'], // ルートの動的パスに一致するキーと値のペアは、現在のコンポーネントの同じ名前のプロパティに自動的に渡されます
  データ() {
      戻る {
          音楽URL: ''
      }
  },
  作成された() {
    フェッチ(`/song/url?id=${this.id}`)
      .then((res) => res.json())
      .then(({ データ }) => {
          //実際の開発では、データ要求が成功したかどうかを判断する必要があります console.log(data[0]);
          // 曲データをデータに割り当てる
        this.musicUrl = データ[0]?.url
      });
  },
};
</スクリプト>

オブジェクト props オブジェクト形式では、オブジェクト キーをレンダリング コンポーネント props 属性の名前として使用し、値は対応する属性値になります (この書き方では値は変更されないため、渡される props はすべて静的属性になります)。

{
    パス: '/home/:id',
    名前: 'ホーム'、
    小道具: {
        a: 1、
        b: 偽
    },
    コンポーネント: ホーム
}

props 関数は、現在のルート情報オブジェクトをパラメータとして受け取り、オブジェクトを返します。オブジェクトのキーはレンダリング コンポーネントの props 属性の名前で、値は対応する属性値です。

{
    パス: '/home/:id',
    名前: 'ホーム'、
    プロパティ: (ルート) => ({
        a: route.query.wd, // ルート query.wd をコンポーネント Home の props に渡します
        b: route.params.id //ルート params.id をコンポーネント Home の b プロパティに渡します
    })、
    コンポーネント: ホーム
}

エイリアス: 文字列| 配列[文字列]

ルートのエイリアス。1 つのルートに複数のパスを設定できます。これらのエイリアスパスにアクセスすると、同じルーティングコンポーネントにアクセスされます。

定数ルート = [
  {
    パス: '/hot',
    コンポーネント: HotMusicList、
    エイリアス: ['/list','/rank','recommend']
  }
]

子?: 配列[RouteConfig]

ネストされたルーティングでは、現在のルートにセカンダリルーティングを設定できます

[
    {
    パス: '/home',
    コンポーネント: ホーム、
    子供たち: [
      {
        パス: '/home/follow',
        コンポーネント: () => import('../views/home/Follow')
      },
      {
        path: 'recommend', //ルートの前の / なしの相対パスは "/home/recommed" と同等です
        コンポーネント: () => import('../views/home/Recommend')
      }
    ]
    }
]

beforeEnter: (to: ルート、from: ルート、next: 関数) => void

ルートの排他的ガード。アプリケーションが現在のルートに移動しようとしているときに、このガードを使用して、このナビゲーションをブロックするかどうかを決定するための論理操作を実行できます。

ルーターインスタンスメソッド

概念: VueRouter インスタンス オブジェクトを Vue に設定すると、vue インスタンスには this.$router プロパティが追加され、this.$router が現在の VueRouter インスタンス オブジェクトになります。すべてのプログラム ナビゲーション API を提供します。
ルータはルーティング属性メソッドを含むルーティングインスタンスオブジェクトであり、ルータはルーティング属性メソッドを含むルーティングインスタンスオブジェクトであり、ルータはルーティング属性メソッドを含むルーティングインスタンスオブジェクトであり、ルートは現在のブラウジングアクセスURLルーティング信頼オブジェクトであることに注意してください。

*VueRouterインスタンスプロパティ

  • アプリは現在のルーターのVueルートインスタンスを設定します
  • モード ルーターが現在使用しているモード "hash" | "history"
  • currentRoute 現在のルートに対応するルート情報オブジェクト

VueRouter インスタンスメソッド

router.push(文字列 | 場所)

プログラムで特定のルートに移動する

<テンプレート>
  <div>
    <h3>ホーム</h3>
    <div class="tab">
      <router-link to="/home/follow">フォロー</router-link>|
      <button @click="gotoRecommend">推奨</button>
    </div>
    <ルータービュー />
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  メソッド: {
    gotoRecommend() {
      // this.$router.push("/home/recommend");
      this.$router.push({path:"/home/recommend", クエリ:{wd:1,offset:0}})
    },
  },
};
</スクリプト>

router.replace(文字列 | 場所)

プログラムで現在のルートを新しいルートに置き換える

<テンプレート>
  <div>
    <h3>ホーム</h3>
    <div class="tab">
      <router-link to="/home/follow">フォロー</router-link>|
      <button @click="gotoRecommend">推奨</button>
    </div>
    <ルータービュー />
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  メソッド: {
    gotoRecommend() {
      // this.$router.replace("/home/recommend");
      this.$router.replace({path:"/home/recommend", クエリ:{wd:1,offset:0}})
    },
  },
};
</スクリプト>

router.go(整数値)

現在のルート履歴スタックからいくつかの項目をプログラム的に前後に移動する

this.$router.go(3) // 現在のルート履歴スタックから 3 エントリ進む this.$router.go(-1) // 現在のルート履歴スタックから 1 エントリ戻る this.$router.go(0) // ページを強制的に更新する

前方/後方の数がインスタンス ルート履歴スタックの長さより大きい場合、最後の項目に進むか、最初の項目に戻ることに注意してください。ただし、パフォーマンスの問題やページ フリーズが発生する可能性があるため、これはお勧めしません。

ルータ.back()

プログラム的に現在のルート履歴スタックから1つ前のルートに戻る

this.$router.back() // this.$router.go(-1) と同等

ルータ.転送()

プログラム的に現在のルート履歴スタックから1ルート進む

this.$router.forward() // this.$router.go(1) と同等

ルーティングの遅延読み込み

vue.js を使用してシングルページ アプリケーションを作成する場合、パッケージ化された JavaScript パッケージは非常に大きくなり、ページの読み込みに影響します。この問題を最適化するには、ルートの遅延読み込みを使用できます。特定のルートを使用すると、対応するコンポーネントが読み込まれるため、効率が向上します。

遅延読み込みなし

コンポーネントは最初に導入され、事前にロードされます。使用されているかどうかに関係なく、すでに存在している

'vue' から Vue をインポートします
'vue-router' から VueRouter をインポートします。
'../views/Home.vue' から Home をインポートします。

Vue.use(VueRouter)

定数ルート = [
  {
    パス: '/'、
    名前: 'ホーム'、
    コンポーネント: ホーム
  },
]

const ルーター = 新しい VueRouter({
  ルート
})

デフォルトルーターをエクスポートする

遅延読み込みを使用する

ルートが使用される場合にのみ、対応するコンポーネントがロードされます。

'vue' から Vue をインポートします
'vue-router' から VueRouter をインポートします。

Vue.use(VueRouter)

定数ルート = [
  {
    パス: '/mock',
    名前:「モック」
    // ルートレベルのコード分割
    // これにより、このルート用の別のチャンク (about.[hash].js) が生成されます
    // ルートが訪問されたときに遅延ロードされます。
    コンポーネント: () => import(/* webpackChunkName: "about" */ '../views/Mock.vue')
  }
]

const ルーター = 新しい VueRouter({
  ルート
})

デフォルトルーターをエクスポートする

履歴モードとハッシュモード

vue-router のデフォルトのハッシュ モード - URL のハッシュを使用して完全な URL をシミュレートするため、URL が変更されてもページはリロードされません。
醜いハッシュが必要ない場合は、ルーターの履歴モードを使用できます。このモードでは、history.pushState API を最大限に活用して、ページをリロードせずに URL ジャンプを完了します。

履歴モード

history - HTML5 History インターフェースの新しい pushState() および replaceState() メソッドを使用します。 (特定のブラウザのサポートが必要) これらの 2 つのメソッドは、ブラウザの履歴スタックに適用されます。既存の back、forward、go メソッド (Router のインスタンス メソッドで表示できます) に基づいて、履歴を変更する機能を提供します。変更を実行すると、現在の URL は変更されますが、ブラウザはすぐにバックエンドにリクエストを送信しません。

手動設定

効果

ハッシュモード

ハッシュ - アドレスバーの URL 内の # 記号 (このハッシュは暗号ハッシュ操作ではありません)。たとえば、この URL: http://localhost:8081/#/form では、ハッシュ値は #/form です。その特徴は、ハッシュが URL に表示されるものの、HTTP リクエストには含まれず、バックエンドには影響しないため、ハッシュを変更してもページはリロードされないことです。

ルートガード

グローバルルーティングガード

  • router.before各フロントガード
  • *router.beforeフロントガードを解決する
  • *router.afterEach ポストガード

ケース1

vue-router を使用して開発されたプロジェクトでは、異なるルートを切り替えると、通常、出発ルート コンポーネントがアンインストールされ、出発ルート コンポーネントがマウントされます。
この場合、Vue の宣言サイクルを通じてページ上でいくつかの論理操作を実行できます。ただし、場合によっては、アプリケーションでユーザー エクスペリエンスを向上させたり、アンインストールの頻度を減らしたり、削除されるコンポーネントのアクティビティを保持したりする必要がある場合は、キープアライブ コンポーネントを使用して router-view をラップし、ルート スイッチによって削除されるコンポーネントがアンインストールされます。現時点では、ルートの出入り時にコンポーネント自身のデータ DOM プログラミングを変更するためにコンポーネントが何らかの操作を実行する必要がある場合、vue ライフサイクルに依存できなくなります。この場合、コンポーネント内でルートガードを使用してください。

  • beforeRouteEnter ルーティングコンポーネントが進入しようとしている
  • beforeRouteUpdate (2.2 の新機能) ルートコンポーネントが更新されます -> /music/10086 /music/10010
  • beforeRouteLeave ルーティングコンポーネントが出発しようとしている
エクスポートデフォルト{
  プロパティ: ['id'],
  データ() {
      戻る {
          音楽URL: ''
      }
  },

  beforeRouteEnter (to、from、next) {
    // このコンポーネントをレンダリングする対応するルートが確認される前に呼び出されます // いいえ!できる!コンポーネントインスタンス `this` を取得します。
    //ガードが実行される前にコンポーネントインスタンスが作成されていないため console.log(undefined)
  },
  beforeRouteUpdate (to、from、next) {
    // 現在のルートが変更されたがコンポーネントが再利用されたときに呼び出されます // たとえば、動的パラメータを持つパス /foo/:id の場合、/foo/1 と /foo/2 の間を移動すると、
    // 同じ Foo コンポーネントがレンダリングされるため、コンポーネント インスタンスが再利用されます。この場合、このフックが呼び出されます。
    // コンポーネントインスタンス `this` にアクセスできます
  },
  beforeRouteLeave (to、from、next) {
    // このコンポーネントの対応するルートから移動するときに呼び出されます // コンポーネントインスタンス `this` にアクセスできます
  }
}

コンポーネント固有のルーティングガードメソッドにはすべて、次の3つのパラメータが含まれていることに注意してください。

  • to : location このルートナビゲーションジャンプのターゲットルート情報オブジェクト
  • from : location このルートナビゲーションのジャンプ元のルート情報オブジェクト ()
  • next : function このメソッドがこのルートにジャンプすることを許可するかどうか
next() // ルーティング ジャンプを許可する next(true) // ルーティング ジャンプを許可する next(false) // ルーティング ジャンプを許可しない next('/') / next({ path: '/' }) // 別のアドレスにジャンプします。現在のナビゲーションが中断され、新しいナビゲーションが実行されます。任意の場所オブジェクトを next に渡すことができ、replace: true、name: 'home' などのオプションを設定できます。
// beforeRouteEnter の next メソッドのみがコールバック関数を受け入れることができることに注意してください。
// コールバック関数は、現在のルーティングコンポーネントインスタンスオブジェクトをパラメータとして受け取り、それを通じて現在のコンポーネントを操作できます beforeRouteEnter(to, from, next) {
    console.log(宛先、送信元)
    console.log('コンポーネントが入力されようとしていますが、コンポーネントインスタンスがまだ存在しません', this)
    次(vm => {
      フェッチ(`/song/url?id=${vm.id}`)
      .then((res) => res.json())
      .then(({ データ }) => {
          //実際の開発では、データ要求が成功したかどうかを判断する必要があります console.log(data[0]);
          // 曲データをデータに割り当てる
        vm.musicUrl = データ[0]?.url
      });
    }) // ルーティングのジャンプを許可する }

ケース2

vue-router を使用して開発されたプロジェクトでは、異なるルートを切り替えると、通常、出発ルート コンポーネントがアンインストールされ、出発ルート コンポーネントがマウントされます。
この場合、Vue の宣言サイクルを通じてページ上でいくつかの論理操作を実行できます。ただし、場合によっては、ユーザー エクスペリエンスを向上させ、アンインストールの頻度を減らしたり、離れたコンポーネントのアクティビティを保存したりするために、キープアライブ コンポーネントを使用してルーター ビューをラップし、ルートの切り替えによって離れたコンポーネントをアンインストールすることができます。このとき、ルートの進入時または離脱時にコンポーネントが何らかの操作を実行する必要がある場合は、コンポーネント自体の状態を変更する必要はなく、このルートのジャンプが許可されているかどうかを判断するだけで済みます。この場合は、ルーター専用のガードをご利用ください。

beforeEnter(to, from, next) は、ルータが現在のルートに移動しようとしているときにトリガーされます。const router = new VueRouter({
  ルート: [
    {
      パス: '/foo',
      コンポーネント: Foo、
      beforeEnter: (to, from, next) => {
        // ...
      }
    }
  ]
})

ログイン認証ルートの排他ガード設定例

定数ルート = [
    {
        パス: '/'、
        コンポーネント: ホーム
    },
    {
        パス: '/discover',
        コンポーネント: () => import('../views/Discover')
    },
    {
        パス: '/mine',
        コンポーネント: () => import('../views/Mine'),
        //ルート排他ガード beforeEnter(to, from, next) {
            // このガードは DOM 操作を実行せず、コンポーネント自身の状態を読み書きしないため // このようなガードはルート排他ガードとして使用できます // 正しいアプローチは Cookie ストレージ内です if (localStorage.getItem("user")) {
              次();
            } それ以外 {
              // ここには this はなく、next はコールバック関数を受け取り、コールバック関数にジャンプします // 次の記述は個人ページに入り、個人ページからログインページにリダイレクトするため、不要なバグが発生する可能性があります
              // 次((vm) => {
              // vm.$router.replace('/landr')
              // });
              next({name:'login',params:{to}}); //このジャンプを防ぎ、指定されたルートに直接移動します}
          }
    },
    {
        パス: '/landr', // ログインして登録
        コンポーネント: () => import('../views/loginanregister/LoginAndRegister'),
        子供たち: [
            {
                名前:'ログイン',
                パス: 'ログイン',
                コンポーネント: () => import('../views/loginanregister/Login')
            },
            {
                パス: 'register',
                コンポーネント: () => import('../views/loginanregister/Register')
            }
        ]
    }
]

ケース3

グローバル ルート ガードは、アプリケーション内に同じ論理ルート ガード判定を実行する必要があるルートが複数あり、論理操作でコンポーネント DOM またはコンポーネント コンポーネントの状態を直接操作する必要がない場合に、グローバル ルート ガードを使用できます (グローバル ガードの最も一般的な用途はログイン検証です)。
beforeEach(to,from,next) グローバル フロント ガード

'vue' から Vue をインポートします
'vue-router' から Router をインポートします。
'../views/Home' から Home をインポートします

Vue.use(ルーター)

定数ルート = [
    {
        パス: '/'、
        名前: 'ホーム'、
        コンポーネント: ホーム
    },
    {
        パス: '/discover',
        名前: 「発見」
        コンポーネント: () => import('../views/Discover')
    },
    {
        パス: '/mine',
        名前: 「マイン」
        コンポーネント: () => import('../views/Mine'),
    },
    {
        パス: '/landr', // ログインして登録
        コンポーネント: () => import('../views/loginanregister/LoginAndRegister'),
        子供たち: [
            {
                名前: 'ログイン',
                パス: 'ログイン',
                コンポーネント: () => import('../views/loginanregister/Login')
            },
            {
                パス: 'register',
                コンポーネント: () => import('../views/loginanregister/Register')
            }
        ]
    }
]

const router = 新しいルーター({
    ルート、
    linkExactActiveClass: 'active'
})
// グローバルルートガード すべてのルートジャンプはこのガードを呼び出します // グローバルルートガードは、Vue ルーターアプリケーションでのログイン検証に最適な場所でもあります router.beforeEach((to, from, next) => {

    if(to.name === "Mine" || to.name === "Discover") {
        // このガードは DOM 操作を実行せず、コンポーネント自身の状態を読み書きしないため // このようなガードはルート排他ガードとして使用できます // 正しいアプローチは Cookie ストレージ内です if (localStorage.getItem("user")) {
            次();
        } それ以外 {
            // ここには this はなく、next はコールバック関数を受け取り、コールバック関数にジャンプします // 次の記述は個人ページに入り、個人ページからログインページにリダイレクトするため、不要なバグが発生する可能性があります
            // 次((vm) => {
            // vm.$router.replace('/landr')
            // });
            next({ name: 'login', params: { to } }); //このリダイレクトを防ぎ、指定されたルートに直接移動します}
    }それ以外 {
        次()
    }

})

デフォルトルーターをエクスポートする

router.beforeResolve(to,from,next) グローバルフロントガード、beforeEach がトリガーされた後
router.afterEach(to, from) グローバル ポストガード。ルートが離れたときにトリガーされます。このガードには next がなく、 next 関数はナビゲーション自体を変更しません。

Vue-Router ルートの詳細設定に関するこの記事はこれで終わりです。Vue-Router ルート設定に関するより詳しい内容については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • vue3+TypeScript+vue-routerの使い方
  • Vue-router ネストルーティングの詳細な説明
  • vue-router 4 の使用例の詳しい説明
  • バックエンドの権限に基づいてナビゲーション メニューを動的に生成する Vue-router のサンプル コード
  • Vue-Routerのインストールプロセスと原理の詳細
  • 非常に詳細な Vue-Router のステップバイステップのチュートリアル
  • Vue-Routerのインストールと使用方法の詳細な説明
  • vue3 で vue-router を使用するための完全な手順
  • Vue ルーター vue-router 詳細説明ガイド
  • Vue-routerルーティングの使い方
  • Vue ルーティング vue-router の使用方法の説明

<<:  CSSマスクのフルスクリーン中央揃えを実装する方法

>>:  Nginx 最適化サービスで Web ページ圧縮を実装する方法

推薦する

Nginx が Apache より優れている理由

Nginx は、わずか数年で Web サーバー市場の大部分を占めるようになりました。周知のとおり、N...

ブラウザの互換モードでボタン内のテキストが垂直方向に中央揃えにならない問題について簡単に説明します。

XML/HTML コードコンテンツをクリップボードにコピー<ボタンスタイル= "カ...

mysql の not equal to null と equal to null の書き方の詳細説明

1. テーブル構造 2. 表データ 3. クエリのteacher_nameフィールドは空にすることは...

Windows サーバー ポートを開きます (例としてポート 8080 を使用します)

ポートとは何ですか?私たちが通常参照するポートは、物理的な意味でのポートではなく、具体的には TCP...

CSSは2つの要素をブレンドする効果(スティッキー効果)を実現します。

数年前、Taobaoのモバイル版の左下隅に面白い丸いボタンがあったことを覚えています。それをクリック...

リンク内の href=# はどういう意味ですか?

現在のページへのリンク。 -------------------一般的な使用法は次のとおりです。 &...

Dockerを使用してブログサイトを素早く構築する方法の詳細な説明

目次1. 準備2. 展開プロセス3. アクセステストHalo は、ブログに慣れている学生に追加のオプ...

Vue3 でパンくず関数コンポーネントをカプセル化するいくつかの方法

目次序文1. パンくずリストはなぜ必要なのでしょうか? 2. 一次包装1. 実装のアイデア2. コー...

MySQLデータベースに中国語の文字を保存するときに発生するエラーを解決する方法を教えます

目次1. 遭遇した問題2. 問題を分析する3. 本当の問題4. 解決策5. ソリューション効果1. ...

HTML テーブル タグ チュートリアル (36): テーブル ヘッダーの背景色属性 BGCOLOR

<TH> タグは、テーブル内のヘッダーのプロパティを設定するために使用されます。以下の...

Tik Tok サブスクリプション ボタンのアニメーション効果を実現する CSS

少し前にTik Tokを見ていて、フォローするときのボタンアニメーションがとても美しいと思ったのと、...

Centos8 は kdc 暗号化に基づいて nfs を構築します

目次構成nfs サーバー (nfs.skills.com) nfs クライアント (client.s...

HTML テーブル マークアップ チュートリアル (10): セル パディング属性 CELLPADDING

セルのパディングは、セルの内容と境界線の間の距離です。基本的な構文<TABLE セルパディング...

select @@session.tx_read_only が DB に大量に出現するのはなぜですか?

問題を見つける上位の SQL ステートメントを取得すると、DB が大量のselect @@sessi...

珍しいけれど役に立つJSテクニックをいくつか紹介します

序文プログラミング言語には通常、さまざまな隠されたトリックが含まれており、これらのトリックを上手に使...