HashRouter vs BrowserRouter
TL; DR
BrowserRouter
A that uses the HTML5 history API (pushState, replaceState and the popstate event) to keep your UI in sync with the URL.
HTML 5 history APIを使用してUI(画面)とURLを通気状態に保つルータ.
(pushState、replaceState、popstateイベント)
MDN history API
HashRouter
A that uses the hash portion of the URL (i.e. window.location.hash) to keep your UI in sync with the URL.
URLのhash部分(例えば
window.location.hash
)を使用して、UI(画面)をURLと同期させるルータ.ここで重要なのはhash historyが
location.key
またはlocation.state
をサポートしていないことです.したがって、
react-router
の公式文書は<BrowserStory>
を使用することを推奨します.react router documentation
Conclusion
ルータとは、クライアントパス(リクエストパス)を表示し、そのリクエストを処理できる場所です.
HashRouter
よりも、BrowserRouter
の方がおすすめです.ルーターとは?
ルータとは、クライアントパス(リクエストパス)を表示し、そのリクエストを処理できる場所です.
BrowserRouter
jsを使ってURLを変更することは古くから可能です.
document.location.href = 'https://developer.mozilla.org/';
上記の操作を行うと、当然ページが再ロードされます.従って、上記の方法はSPAには不向きな方法である.(
window.location.hash
では、再ロードせずに変更を行うことができますが、ハッシュ値のみを変更するので、これは適切な方法ではありません.)ただし、History APIを使用すると、再ロードせずに変更できます.
window.history.pushState({}, null, 'https://developer.mozilla.org/')
pushState しかし、上記の方式にも明確な限界がある.
提供されるURLは、現在のページのソースと同じである必要があります(origin).
Advantages of HashRouter
最大の利点は、ユーザが通常の(hashなし)URLを表示できることである.
またSEO面でも有利です.
Disadvantages of HashRouter
BrowserRouter
には多くの利点がありますが、追加の構成が必要であり、コストがかかります.(サーバを構築し、要求に常に応答する)HashRouter
#
は長い間URLの一部として使われてきた.(ex.
https://developer.mozilla.org/en-US/docs/Web/API/URL#properties
)<h2 id="properties">
<a href="#properties" title="Permalink to Properties">Properties</a>
</h2>
上記のURLは、ブラウザがDOM treeでid="properties"
を検索することを可能にする.次に、ブラウザがその場所にスクロールします.上の要素が見つかるからです.
またURLのhash(#)にはもう一つの特性があり、inspectorでチェックすると
ブラウザが
#properties
をサーバに送信していないことがわかります.これはブラウザで説明しjsでアクセスできます.
console.log(window.location.hash);
// #properties
上記の特徴は、SPAを作成する際に有利である可能性があります.これは、1つのHTMLでjsを使用してURLにページを生成するためです.
上記の特徴はcreate react appで生成されたアプリケーションで簡単に見つけることができます.
サーバ応答
<div id="root"></div>
およびjsファイルが表示されます.したがって、サーバがユーザーが接続する正しいパスに関する情報を受信していない場合、これは非常に有用である可能性があります.
Advantages of HashRouter
最大の利点は、ブラウザがルーティング情報をサーバに送信しないことです.
そのため、構成は非常に簡単です.
Disadvantages of HashRouter
欠点は、ユーザーが慣れていないURLを体験する必要があることです.
(URLにhash(#)が含まれているので)
しかもSEO方面にも良くない
関連記事
Conclusion
だから結論は何ですか.まず結論から、できれば
BrowserRouter
を使います.ただし、単純なSPAと静的ページを作成することを目的としている場合は、HashRouterで十分です.
自分の目的に合ったルーターを選ぶ.
reference
React router documentation
Comparing the HashRouter and the BrowserRouter in React applications
[React Router]react-rrouter-domにおけるHashRouterとBrowserRouterの違い
Reference
この問題について(HashRouter vs BrowserRouter), 我々は、より多くの情報をここで見つけました https://velog.io/@zxcvbnm5288/HashRouter-vs-BrowserRouterテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol