vue のデフォルトのルーティング モードは「ハッシュ」モードです。このモードは URL のハッシュ値をルートとして使用し、完全な URL をシミュレートし、すべてのブラウザをサポートします。ハッシュ モードの背後にある原理は onhashchange イベントであり、これはウィンドウ オブジェクトで監視できます。
このチュートリアルの動作環境: Windows7 システム、vue2.9.6 バージョン、DELL G3 コンピューター。
vue のルーティングはデフォルトでハッシュ モードになりますが、これは純粋なフロントエンドで実行できます。
ハッシュ: URL のハッシュ値をルートとして使用します。すべてのブラウザをサポートします。
ハッシュ モードの背後にある原理は、window オブジェクトで監視できる onhashchange イベントです。
window.onhashchange = function(event){ console.log(event.oldURL, event.newURL); let hash = location.hash.slice(1); document.body.style.color = hash; }
上記のコードは、ハッシュを変更することでページのフォントの色を変更できます。あまり役に立ちませんが、原理をある程度説明しています。
さらに重要な点は、ハッシュ変更を行った URL がブラウザによって記録されるため、ブラウザの「進む」と「戻る」を使用できることがわかり、「戻る」をクリックするとページのフォントの色も変更されるということです。変化、多様性。このように、ブラウザがサーバーに要求をしないにも関わらず、ページの状態と URL が 1 つずつ関連付けられるようになり、後にフロントエンド ルーティングという横暴な名前が付けられ、シングルページ アプリケーションの標準構成となりました。 。
これをテストするための簡単なメソッドを書いてみましょう。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div>测试一下</div> <script type="text/javascript"> window.onhashchange = function(event){ console.log(event.oldURL,event.newURL) let hash = location.hash.slice(1); document.body.style.color = hash; } </script> </body> </html>
ブラウザ内で前後に進むことでページを変更できます。
NetEase Cloud Music と Baidu Netdisk は次のようなハッシュ ルーティングを使用します:
http://music.163.com/#/friend https://pan.baidu.com/disk/home#list/vmode=list
そして他の 2 つの vue ルーティング モード:
History : HTML5 以降の History API とサーバー構成。公式 Web サイトの HTML5 履歴モードを参照してください。
要約: すべての JavaScript 実行モードをサポートします。ブラウザ API がないことが判明した場合、ルーティングは自動的にこのモードに強制されます。
#履歴ルーティング
## 履歴 API の登場により、フロントエンド ルーティングが進化し始めました。 hashchange を使用すると、# 以降の URL フラグメントのみを変更できますが、履歴 API ではフロントエンドに完全な自由が与えられます
履歴 API は、切り替えと変更の 2 つの部分に分けることができます
(1) 履歴ステータスの切り替え
には、ブラウザの「進む」、「戻る」、「ジャンプ」操作に対応する「戻る」、「進む」、「進む」の 3 つのメソッドが含まれています。(Google の) ブラウザには「進む」と「戻る」しかないという生徒もいました。ジャンプはありません。ええと、マウスを前後に長押しすると、現在のすべてのウィンドウの履歴レコードが表示され、ジャンプできるようになります (ジャンプと呼ぶ方が適切かもしれません):
history.go(-2);//后退两次 history.go(2);//前进两次 history.back(); //后退 hsitory.forward(); //前进
(2) 履歴ステータス
を変更します。pushState と replaceState の 2 つのメソッドがあります。これら 2 つのメソッドは、stateObj、title、url
history.pushState({color:'red'}, 'red', 'red') window.onpopstate = function(event){ console.log(event.state) if(event.state && event.state.color === 'red'){ document.body.style.color = 'red'; } } history.back(); history.forward();
の 3 つのパラメータを受け取ります。ページの状態が保存されます。 Pushstate を介して状態オブジェクトに格納されます。ページの URL がこの URL に戻るとき、この状態オブジェクトは、event.state を通じて取得できるため、ページの状態を復元できます。ここでのページの状態は、ページのフォントの色です。実際、スクロール バーの位置、読み取りの進行状況、コンポーネントのスイッチはすべてステート内に保存できます。
履歴 API を通じて、醜い # を失いましたが、問題もあります。
前進または後退することは怖くありませんが、更新するのは怖いです、f5, (バックエンドが準備されていない場合)、更新は実際にサーバーを要求するためです。
ハッシュ モードでは、フロントエンド ルーティングによって # の情報が変更されますが、ブラウザはリクエスト時にその情報を処理しないため、問題はありません。ただし、履歴の下ではパスを自由に変更できますが、更新時にサーバーに対応する応答またはリソースがない場合は、1 分ごとに 404 が表示されます。
[関連する推奨事項:「
vue.js チュートリアル以上がvueのデフォルトのルーティングモードは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。