0

私の意見では、優れた単一ページの Web アプリケーションは、ユーザーのアクションごとにページ全体を (再) ロードする従来の Web アプリケーションにできるだけ近い (そして賢明な) ものでなければなりません。特に、単一ページの Web アプリケーションは、戻るボタンと進むボタンを含むブラウザーの履歴をサポートする必要があります。

単一ページ Web アプリケーションのほとんどのフレームワークは、ブラウザー履歴をサポートしています。しかし、それらは 1 つの重要なことをエミュレートしていないようです: たとえば、従来の Web アプリケーションのページ 1 でフォーム フィールドに入力し、アプリケーションのページ 2 に移動して [戻る] ボタンをクリックすると、ブラウザは入力を復元します。

単一ページの Web アプリケーションでは、通常、次の 2 つのいずれかが発生します。ページ 1 のフォーム フィールドがページ 2 の DOM の一部 (ただし非表示) (または少なくとも Javascript データ構造の一部) であるため、または、ページ 1 にアクセスするたびにフォーム フィールドが新しく作成されます (直接のナビゲーションまたは [戻る] ボタンを押す)。後者の場合、以前の入力は復元されません。

前者の方が優れていることは明らかです。しかし、このソリューションも完璧ではありません。従来の Web アプリケーションでは、履歴に前述のページ 1 が複数回含まれていても、各履歴エントリにはフォーム フィールドの独自のキャッシュ値があります。ただし、すべてのアプリケーション内ナビゲーションでフォーム フィールドを再作成しない単一ページ アプリケーションは、すべてのフォーム フィールドに対して 1 つの値のみをキャッシュします。

この問題を解決し、単一ページ Web アプリケーションをより良くするための 1 つのアイデアは、フォーム フィールドの値をHTML5 履歴インターフェイスの pushState メソッドと replaceState メソッドのdata属性に保存して、他の履歴情報と一緒に保存することです。もちろん、ユーザーが移動する前に現在の履歴エントリを更新しておく必要があるため、replaceState を使用して現在の履歴エントリを更新するすべてのフォーム コントロールでonchange -event ハンドラを使用する必要があります。

ここで私の質問は、上記の問題に対するより良い解決策があるかどうか、およびそれを処理する単一ページの Web アプリケーション フレームワーク/ライブラリがあるかどうかです。

4

0 に答える 0