14

この記事では、URL は存続期間が長い (ブックマークされて渡される) ため、意味のあるものである必要があり、実際のルーティング (ページに表示されるデータや状態を決定する) にはハッシュを使用するというかなり説得力のある議論を行っています。したがって、アプリケーションの) は不適切です。しかし、シングルページ アプリケーションで実際にこれを実行しようとする、問題に直面します。すべてのブラウザーがアプリケーションを使用できるようにするには、リンクをどのように表示すればよいでしょうか? 私が見たように、3つのオプションがあります:

  1. すべてhrefの には#/接頭辞があります。これは、HTML4 ブラウザーでうまく機能します。HTML5 ブラウザーでは、ハッシュのないバージョンにリダイレクトするSammyルートを追加できますが、これもうまく機能します。ブラウザーがリンクを訪問していないときに訪問済みとしてマークしたり、訪問済みのときに訪問済みとしてマークしたりしないという問題がある可能性があります。他の問題は、それが...間違っているということです。リンクを右クリックして [リンク URL をコピー] を選択することでリンクを共有する人は、機能しているが扱いにくい URL を送信することになります。
  2. nohrefには#/接頭辞がありません。私が知る限り、HTML4 ブラウザにはこれらのリンク クリックを傍受する方法がありません。つまり、クリックごとにページが更新されます。アプリケーションはおそらくまだ機能しますが、Sammy ルートを使用して、ページの読み込み時にハッシュのないバージョンをハッシュのあるバージョンに書き換えることができるため、ページの読み込みによって単一ページ アプリケーションのパフォーマンスが低下します
  3. プレフィックスを付けるかどうかを動的に決定します#/。これは、すべてのリンクに動的マークアップが必要であり、アプリケーションが非常に複雑になることを意味します。
4

1 に答える 1

11

URLのhash値が原因でページ全体がリロードされることはありません。HTML4以前にはありません。ハッシュ値は常に内部リンクであるため、完全に使用できます (たとえば、twitter を見てください)。もちろん、ページを更新すると、ページがリロードされます。しかし、それは明らかです。

JavaScript を使用すると、実際にこのハッシュ値を読み取ることができます (この質問/回答も参照してください: JavaScript を使用して URL の #hash を確認するにはどうすればよいですか? ) 。window.location.hash

最新のブラウザーを使用すると、ハッシュの変更を検出することもできます。これは、ユーザーが実際に URL を変更した場合に役立ちます

しかし、ウェブサイトとして、これを読む必要のない URL を変更するときは、変更したばかりなので、すでにわかっています。

このように、ハッシュを使用すると、人々は URL を交換でき、要求している URL を実際に読み取ることができるため、完全に機能するはずです。

于 2011-10-11T17:45:18.850 に答える