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