vue-router のハッシュモードと履歴モードの違い

vue-router のハッシュモードと履歴モードの違い

vue-routerには2つのモードがあります

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

1. シングルページアプリケーション

シングルページアプリケーション

1. HTMLファイルは1つだけであり、ウェブサイト全体のすべてのコンテンツはこのHTMLにあり、JSによって処理されます。

2. ページ操作が更新されないだけでなく、ページジャンプも更新されません。シングルページ アプリケーションを実現するには、フロントエンドとバックエンドの分離 + フロントエンド ルーティングが必要です。 (ページを再リクエストせずにビューを更新します)

フロントエンドルーティング

実装は実際には非常に簡単です。異なる URL パスを一致させて解析し、さまざまなコンポーネントをロードして、地域の HTML コンテンツを動的にレンダリングするだけです。

アドバンテージ

優れたインタラクティブエクスペリエンス、ユーザーはページを更新する必要がなく、ページがスムーズに表示され、フロントエンドとバックエンドの作業分離モードが優れており、サーバーの負荷が軽減されます。

欠点

SEOには良くない、最初の読み込みに時間がかかる

2. ハッシュモード

原則: これは、ウィンドウオブジェクトでリッスンできるonhashchangeイベントです。

vue-routerのデフォルトモードはハッシュモードです

1. URLハッシュを使用して完全なURLをシミュレートする

2. URLが変更されてもページは再読み込みされない、つまりシングルページアプリケーションである

2. # の後のハッシュが変化すると、ブラウザはサーバーにリクエストを送信しません。ブラウザがリクエストを送信しない場合、ページは更新されず、hasChange イベントがトリガーされます。ハッシュ値の変化を監視することで、ページコンテンツの一部を更新する操作を実現できます。

window.onhashchange = 関数(イベント){
    console.log(イベント.oldURL、イベント.newURL);
    ハッシュをlocation.hash.slice(1)とします。
    document.body.style.color = ハッシュ;
}

ハッシュ モードの場合、hashHistory オブジェクトが作成されます。異なるルートにアクセスすると、次の 2 つのことが起こります。

1. HashHistory.push() は、新しいルートをブラウザのアクセス履歴スタックの先頭に追加します。

2. HasHistory.replace() は現在のスタックの一番上のルートを置き換えます。

3.履歴モード

history api の登場により、フロントエンドのルーティングが進化しました。以前の hashchange では、# の後の URL フラグメントのみを変更できましたが、history api ではフロントエンドに完全な自由が与えられます。

  • 履歴APIは、切り替えと変更の2つの部分に分けられます。

3.1 履歴ステータスの切り替え

戻る、進む、進むなど、ブラウザの進む、戻る、ジャンプ操作に対応する 3 つのメソッドがあります。たとえば、(Google) ブラウザには進むと戻るしかなく、ジャンプはありません。進むボタンと戻るボタンをマウスで長押しすると、現在のすべてのウィンドウの履歴が表示され、ジャンプ (ジャンプと呼ぶ方が適切かもしれません) できるようになります。

history.go(-2);//戻るtwicehistory.go(2);//進むtwicehistory.back(); //戻るhistory.forward(); //進む

3.2 履歴ステータスを変更する

2つのメソッド:pushStateとreplaceStateが含まれます

これら2つのメソッドは、stateObj、title、urlの3つのパラメータを受け取ります。

history.pushState({color:'red'}, 'red', 'red'})

window.onpopstate = 関数(イベント){
    コンソール.log(イベント.状態)
    イベントの状態が赤の場合
        document.body.style.color = '赤';
    }
}

履歴を戻す

履歴を転送する

ステップ

1.pushstateを介してページの状態を状態オブジェクトに保存する

2. ページURLがこのURLに戻ると、event.stateを通じて状態オブジェクトを取得できます。

3. ページの状態を復元できるように

4. ここでのページ状態は、ページのフォントの色です。実際には、スクロールバーの位置、読み取りの進行状況、コンポーネントの切り替えなどのページ状態はすべて状態に保存できます。

3.3 履歴モードが恐れるものは何ですか?

ハッシュと履歴の違い

履歴モード

1. 履歴APIを通じて醜い#を取り除くが、問題もある。

2. 前進や後退を恐れるのではなく、更新を恐れてください。f5

——履歴モードでは、URLが通常のリクエストバックエンドのURLと同じになるように変更されます。バックエンドが対応する/user/idルーティング処理で構成されていない場合は、404エラーが返されます。

——したがって、この実装にはサーバーのサポートが必要であり、すべてのルートをルート ページにリダイレクトする必要があります。

灰モード

1. 前のハッシュ変更では、# の後の URL セグメントのみを変更できます。 pushState によって設定される新しい URL は、現在の URL と同じオリジンを持つ任意の URL にすることができます。

2. フロントエンドルーティングは # の情報を変更し、ブラウザはリクエスト時にそれを使用しないため、問題はありません。ただし、履歴の下では、パスを自由に変更できます。リフレッシュ時に、サーバー内に対応する応答またはリソースがない場合、数分以内に 404 が表示されます。

要約する

これで、vue-router のハッシュ モードと履歴モードの違いに関するこの記事は終了です。vue-router のモードの違いの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vue-router は現在の場所 (/path) へのナビゲーションを許可しません。エラーの原因と修正
  • vue3.x+vite+element-ui+vue-router+vuex+axios を使用してプロジェクトをビルドします
  • 非常に詳細な Vue-Router のステップバイステップのチュートリアル
  • Vue-Routerのインストールと使用方法の詳細な説明
  • vue3 で vue-router を使用するための完全な手順
  • Vue-router ルーティングの遅延読み込みとそれを実装する 3 つの方法
  • Vue-routerのハッシュモードと履歴モードの違いの詳細な説明
  • vue-routerはメタ情報メタ操作を定義します
  • vue3.0+vue-router+element-plusの初期練習
  • vue-routerのナビゲーションフック(ナビゲーションガード)の詳しい説明
  • Vue-Routerのインストールプロセスと原理の詳細

<<:  Linux で MySQL 8.0 バージョンをアンインストールする方法

>>:  MySQL 8.0.15 winx64 のインストールと設定方法のグラフィックチュートリアル

推薦する

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

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

Linux デスクトップ用の 4 つのスキャン ツール

ペーパーレスの世界はまだ到来していませんが、書類や写真をスキャンすることで紙をなくす人が増えています...

Vueは水平の斜めの棒グラフを実装します

この記事では、水平傾斜棒グラフを実装するためのVueの具体的なコードを参考までに共有します。具体的な...

nginxのインストールと設定の詳細なプロセス記録

目次1 nginxの紹介1 nginxとは何か2 つのアプリケーション シナリオ2 nginxのイン...

ApacheのDjangoオンライン展開方法

環境: 1. Windows Server 2016 Datacenter 64 ビット 2. SQ...

Facebookの情報アーキテクチャの分析

<br />原文: http://uicom.net/blog/?p=762 Faceb...

タイムスタンプの差を計算するSQLメソッド

タイムスタンプの差を計算するSQLメソッド概要場合によっては、特定のレコードを時間で検索する必要があ...

MySQL 8.0 再帰クエリの簡単な使用例

序文この記事では、MySQL 8.0 の新機能を使用して再帰クエリを実装します。詳細なサンプル コー...

初めてDockerイメージを構築、実行、公開、取得するための詳細な手順

1. はじめに以前は、Python アプリケーションの作成を開始したい場合、最初のステップはマシンに...

docker ログ - docker コンテナ ログの実装を表示します

docker logs コマンドを使用してコンテナ ログを表示できます。コマンド形式: $ dock...

Linux コマンドを使用してオーディオ形式を変換および結合する方法

FFmpeg flacをインストールする eric@ray:~$ sudo apt install ...

MySQL binlog ログを開く方法

binlog は、すべての mysql dml 操作を記録するバイナリ ログ ファイルです。 bin...

MySQLの左結合を内部結合に素早く変換するプロセス

日々の最適化プロセス中に、奇妙なことに気付きました。同じ SQL にまったく異なる 2 つの実行プラ...

MySQL のデバッグと最適化に関する 101 のヒントを共有する

MySQL は強力なオープンソース データベースです。データベース駆動型アプリケーションの数が増える...

Linux centos7 環境での MySQL インストール チュートリアル

Linux centos7 環境に MySQL をインストールする手順の詳細な紹介MySQLをインス...