More Related Content
PPTX
PPTX
世界一わかりやすいClean Architecture PDF
インフラエンジニアの綺麗で優しい手順書の書き方 PDF
PDF
こんなに使える!今どきのAPIドキュメンテーションツール PDF
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021 PDF
ストリーム処理を支えるキューイングシステムの選び方 What's hot
PDF
PPTX
PDF
もうひとつのアンチパターン OTLT、あるいは如何にして私はオレオレフレームワークを忌み嫌うようになったか PDF
PDF
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 PDF
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか? PDF
PDF
PDF
PDF
PDF
PDF
イマドキ!ユースケース別に見るAWS IoT への接続パターン PDF
マイクロサービスバックエンドAPIのためのRESTとgRPC PPTX
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス PDF
PDF
PPTX
KEY
PDF
Similar to SPAのルーティングの話
PPTX
徳丸本に載っていないWebアプリケーションセキュリティ PDF
Spring Boot × Vue.jsでSPAを作る PDF
クロスドメインアクセスを理解してWeb APIを楽しく使おう PDF
ASP.NET シングル ページ アプリケーション (SPA) 詳説 PDF
PPTX
PPTX
PPTX
PDF
PDF
Pro aspnetmvc3framework chap11 PDF
KEY
PDF
PDF
Data API + AWS = (CMS どうでしょう 札幌編) PDF
PPTX
JavaScriptテンプレートエンジンで活かすData API PDF
RESTful開発フロントエンド編(SPA・AltJS・フレームワーク) PDF
20130412 titanium meetupvol7 PDF
Hadoopによるリクルートでの技術調査とその活用 PDF
Recently uploaded
PDF
2025→2026宙畑ゆく年くる年レポート_100社を超える企業アンケート総まとめ!!_企業まとめ_1229_3版 PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望 PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S... PDF
PMBOK 7th Edition Project Management Process Scrum PDF
PMBOK 7th Edition_Project Management Context Diagram PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信 PDF
自転車ユーザ参加型路面画像センシングによる点字ブロック検出における性能向上方法の模索 (20260123 SeMI研) PDF
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis PDF
PMBOK 7th Edition_Project Management Process_WF Type Development PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」 SPAのルーティングの話
- 1.
- 2.
- 3.
SPA ( SinglePage Application )とは
単一の Web ページで構成される Web アプリケーションや Web サイト
デスクトップアプリケーションのような UX を実現する
画面の切り替えは JavaScript による DOM 操作で行う
クライアントサイドで URL に応じた画面を表示(ルーティング)する
- 4.
- 5.
- 6.
Hash によるルーティング
URL のHash (フラグメント識別子)を利用した方法
location.hash
hashchange イベント
http://localhost:8080/path/to#hoge
- 7.
Hash ( JavaScriptでのルートの扱い)
location.hash を使う
遷移先ルートの設定
location.hash = 'hoge';
現在のルートの取得
console.log(location.hash); // -> '#hoge'
- 8.
- 9.
Hash ( aタグでの扱い)
a タグでは通常通りに href 属性で定義する
<a href="#hoge">Hoge</a>
<a href="#fuga">Fuga</a>
<a href="#piyo">Piyo</a>
- 10.
hashchange イベント
Hash が変わった時に発生する
location.hash=== '#aaa' の時に location.hash = 'aaa' しても発生しない
イベントリスナーで変更前と変更後の URL が取得できる
window.addEventListener('hashchange', e => {
const { newURL, oldURL } = e;
console.log(newURL); // http://localhost/#test
console.log(oldURL); // http://localhost/
}, false);
ページロード時には発生しない
ブラウザの戻る・進むでは Hash が変われば発生する
- 11.
- 12.
Hash でのルーティングの特徴
Hash より前のURL の要素(パスとか)は変化しない
http://localhost:8080/path/to#hoge
ブラウザは Hash を HTTP リクエストとしてサーバへ送らない
サーバサイドレンダリングできない
- 13.
(余談) escaped fragment
Googleが過去に出した Hash なルーティングをクロールしてくれる仕組み
現在は Deprecated
「 #! 」みたいな感じでやっていた
https://developers.google.com/webmasters/ajax-crawling/docs/getting-started
- 14.
- 15.
History API によるルーティング
HistoryAPI を利用した方法
location.pathname ( location.search, location.hash )
history.state
history.pushState ( history.replaceState )
popstate イベント
http://localhost:8080/path/to/hoge
- 16.
History API (JavaScript でのルートの扱い)
サーバにリクエストが行かないように次のようにする
遷移先ルートの設定
history.pushState(state, title, '/hoge');
現在のルートの取得
console.log(location.pathname); // -> '/hoge'
- 17.
History API (a タグでの扱い)
サーバにリクエストが行かないようにクリックのデフォルト挙動を止める
<a href="/hoge">Hoge</a>
function handleClick(e) {
e.preventDefault();
const { href } = e.target;
const state = { /* なんらかの状態 */ };
history.pushState(state, null, href);
}
Array.from(document.querySelectorAll('a')).forEach(el => {
el.addEventListener('click', handleClick, false);
});
- 18.
- 19.
History API でのルーティングの動き
ページロード時
現在のルート(location.pathname の値)に応じて画面を表示する
history.state から状態を取り出して利用する
ユーザーの画面遷移操作
history.pushState で遷移先ルートを設定する
遷移先ルートの画面を表示する
popstate イベント
現在のルート( location.pathname の値)に応じて画面を表示する
e.state から状態を取り出して利用する
- 20.
- 21.
History API の開発環境
開発用にWeb サーバを起動して使っているようなケース
何もしないと URL のパスにアクセスしてしまって 404 になる
historyApiFallback を使う
connect を使っている場合は connect-history-api-fallback をミドルウェアに使う
webpack-dev-server の場合はオプションで有効にする
- 22.
Hash と HistoryAPI の比較
Hash History API
難易度 お手軽 いろいろ考慮が必要
サーバサイドの設定 不要 必要
サーバサイドレンダリング できない できる
状態の保持 なし あり
用途 裏画面
Electron アプリ
表画面
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.