『Advanced JavaScript Programming (Third Edition)』の 492 ページを見たとき、質問がありました。
「偽の」URL を使用して更新すると、404 エラーが返されます。Web サーバー上にこのような実際のリンクがない限り、ユーザーは必然的にページを更新する必要があります。本当に更新したいですか?作ってみませんか? 実ファイルは実リンクに相当します では、pushState() は何を使うのでしょうか? 非常に不便ではありませんか?
人生最曼妙的风景,竟是内心的淡定与从容!
pushState 質問に答えるために、主に SPA アプリケーションで使用されます:
pushState
404が表示されます。これは、PushState モードでは URL に # がなく、ブラウザーが実際にサーバーへのリクエストを開始し、サーバー上にこのパスに対応するリソースがないためです。
しかし、サーバー上に実際のリンクを持つ必要はありません (死ぬほど疲れます)。存在しないページ (404) がルート ルートにリダイレクトされるようにサーバー構成を変更するだけで済みます。
Tomcat を例に挙げると、設定は非常に簡単です。次の設定をプロジェクトの web.xml に追加するだけです。 リーリー
更新を押すと、現在のブラウザの URL を含むリクエストがサーバーに送信されます。
たとえば、pushState() を使用して現在のアドレスをboomshaklaka.com/boomに変更した場合 [更新]をクリックした後、サーバーはこのアドレスを受信し、そのアドレスが存在しないことが判明すると 404 を返します。
まず、フロントエンド ルーティングとバックエンド ルーティングの違いを理解する必要があります。
バックエンドルーティングのみの場合、リクエストしたすべてのページはバックエンドによって返されます。現時点では、すべてのルーティングはバックエンドによって制御されます。
ただし、SPA アプリケーションなど、ページを更新したくないが、URL も変更したい場合があります。現時点ではフロントエンドルーティングが必要であり、このpushStateがこの役割を果たします。
まず第一に、私はまだバックグラウンドでのルーティングの処理に慣れています。例としてバックグラウンド ルーティングを使用します。
リーリー
HTML ファイルでは、history.pushState() メソッドがブラウザ履歴に状態を追加します。
pushState
質問に答えるために、主に SPA アプリケーションで使用されます:404が表示されます。これは、PushState モードでは URL に # がなく、ブラウザーが実際にサーバーへのリクエストを開始し、サーバー上にこのパスに対応するリソースがないためです。
しかし、サーバー上に実際のリンクを持つ必要はありません (死ぬほど疲れます)。存在しないページ (404) がルート ルートにリダイレクトされるようにサーバー構成を変更するだけで済みます。
Tomcat を例に挙げると、設定は非常に簡単です。次の設定をプロジェクトの web.xml に追加するだけです。 リーリー
このようにして、Tomcat はリソースが見つからないすべてのパスをルート パスにリダイレクトするため、フロントエンド フレームワークは、それが angular/vue/react/backbone であっても、要求された URL をフロントで独自に処理できます。 -終わり。更新を押すと、現在のブラウザの URL を含むリクエストがサーバーに送信されます。
たとえば、pushState() を使用して現在のアドレスをboomshaklaka.com/boomに変更した場合
[更新]をクリックした後、サーバーはこのアドレスを受信し、そのアドレスが存在しないことが判明すると 404 を返します。
まず、フロントエンド ルーティングとバックエンド ルーティングの違いを理解する必要があります。
バックエンドルーティングのみの場合、リクエストしたすべてのページはバックエンドによって返されます。現時点では、すべてのルーティングはバックエンドによって制御されます。
ただし、SPA アプリケーションなど、ページを更新したくないが、URL も変更したい場合があります。現時点ではフロントエンドルーティングが必要であり、このpushStateがこの役割を果たします。
まず第一に、私はまだバックグラウンドでのルーティングの処理に慣れています。例としてバックグラウンド ルーティングを使用します。
まず、プロジェクト内のどのファイルを関連付けるかは、あなた次第ですリーリー
異なるアクションが同じページをポイントできるため、ウェブサイトには少なくとも 1 つのページが必要ですリーリー
記事内で言及されている404については、ルーティング方向に問題があり、リソースが見つからないため、まだ残っています。