ホームページ > 記事 > ウェブフロントエンド > vue のシングルページ アプリケーションでのフロントエンド ルーティングの使用方法の詳細な説明
今回は、vue シングルページ アプリケーションのフロントエンド ルーティングの使用方法について詳しく説明します。vue シングルページ アプリケーションのフロントエンド ルーティングを使用する際の 注意事項 は何ですか?見てください。
前に書きました: 通常、SPA でフロントエンド ルーティングを実装するには 2 つの方法があります:一.history
1. 履歴の基本的な概要
window.history オブジェクトには、ブラウザーの履歴が含まれています。 History は、SPA フロントエンド ルーティングを実装するための主流のメソッドです。2.history.pushState
pushState(stateObj, title, url) メソッドは、データを履歴スタックに書き込みます。その最初のパラメータは書き込まれるデータ オブジェクト (640kB 以下) で、2 番目のパラメータは次のとおりです。ページのタイトル、3 番目のパラメータは URL (相対パス) です。3 .history.replaceState
replaceState(stateObj, title, url) PushStateとの違いは、閲覧履歴の現在のレコードを書き込むのではなく、置換および変更することです。残りはまったく同じです。 PushState4と同じ。popstateイベント
の定義:同じドキュメントの閲覧履歴(つまり、履歴オブジェクト)が変更されるたびに、popstateイベントがトリガーされます。 注: このイベントは、pushState メソッドまたは replaceState メソッドを呼び出しただけではトリガーされません。ユーザーがブラウザーの「戻る」ボタンと「進む」ボタンをクリックした場合、またはJavaScript を使用して 戻る、進む、および go メソッドを呼び出した場合にのみトリガーされます。 。また、このイベントは同じドキュメントのみを対象とします。閲覧履歴が切り替わり、異なるドキュメントが読み込まれた場合、このイベントはトリガーされません。
使用法: 使用する場合、popstate イベントのコールバック関数を指定できます。このコールバック関数のパラメーターはイベント オブジェクトであり、その state 属性は、現在の URL の PushState メソッドと replaceState メソッドによって提供される状態オブジェクト (つまり、これら 2 つのメソッドの最初のパラメーター) を指します。
5.history はスパ フロントエンド ルーティング コードを実装します<a class="api a">a.html</a>
<a class="api b">b.html</a>
// 注册路由
document.querySelectorAll('.api').forEach(item => {
item.addEventListener('click', e => {
e.preventDefault();
let link = item.textContent;
if (!!(window.history && history.pushState)) {
// 支持History API
window.history.pushState({name: 'api'}, link, link);
} else {
// 不支持,可使用一些Polyfill库来实现
}
}, false)
});
// 监听路由
window.addEventListener('popstate', e => {
console.log({
location: location.href,
state: e.state
})
}, false)
popstate リスニング関数で出力される e.state は、history.pushState() に渡される最初のパラメータです。ここでは、それは {name: 'api' }です
二.Hash
1.Hash基本介绍
url 中可以带有一个 hash http://localhost:9000/#/a.html
window 对象中有一个事件是 onhashchange,以下几种情况都会触发这个事件:
直接更改浏览器地址,在最后面增加或改变#hash;
通过改变location.href或location.hash的值;
通过触发点击带锚点的链接;
浏览器前进后退可能导致hash的变化,前提是两个网页地址中的hash值不同。
2.Hash实现spa前端路由代码
// 注册路由 document.querySelectorAll('.api').forEach(item => { item.addEventListener('click', e => { e.preventDefault(); let link = item.textContent; location.hash = link; }, false) }); // 监听路由 window.addEventListener('hashchange', e => { console.log({ location: location.href, hash: location.hash }) }, false)
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上がvue のシングルページ アプリケーションでのフロントエンド ルーティングの使用方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。