質問: facebookのshebang / hashbang(#!)と新しいtwitterのurlは何ですか? 私たちがこれまで慣れ親しんできた長く複雑なfacebookのurlは、こんな感じになっていることに気づきました。http://www.facebook.com/example.profile#!/pages/another-page/123456789012345思い出すことができる限り、今年の初めには感嘆符のない、通常のurlフラグメントのような文字列(#で始まる)でした。しかし今やそれはshebangかhashbang(#!)で、以前はシェルスクリプトとperlスクリプトでしか見たことがありません。 新しいtwitter のurlにも#!シンボルが追加されました。たとえば、twitterのプロファイルurlは、次のようになりました。http://twitter.com/#!/boltclock#!は、特定のajaxフレームワークや、新しいfacebookやtwitterのインターフェースが現在ajax化されているなど、urlで特別な役割を果たすようになりましたか。 urlでこれを使用すると、webアプリケーションに何らかの利点がありますか?
回答: octothorpe/number-sign/hashmarkはurlにおいて特別な意味を持ち、それは通常文書のセクションの名前を識別します。厳密に言うと、ハッシュに続くテキストはurlのアンカー部分です。あなたがウィキペディアを使うなら、あなたはほとんどのページが目次を持っていることを見るでしょう、そしてあなたはあなたがドキュメントの中でアンカーのように次のようにジャンプすることができるのを見ることができます: https://en.wikipedia.org/wiki/alan_turing#early_computers_and_the_turing_test https://en.wikipedia.org/wiki/alan_turingはページを識別し、early_computers_and_the_turing_testはアンカーです。 facebookや他のjavascript駆動のアプリケーション(私の wood&stones のように)がアンカーを使用するのは、それらがページをブックマーク可能にしたいからです。その答えに対するコメント)またはサーバーからページ全体を再ロードせずに戻るボタンをサポートする。ブックマークと戻るボタンをサポートするためには、urlを変更する必要があります。ただし、ページ部分を(window.location = 'http://raganwald.com';のようなもので)別のurlに変更したり、アンカーを指定せずに変更した場合、ブラウザはそのurlからページ全体を読み込みます。 firebugまたはsafariのjavascriptコンソールでこれを試してください。 http://minimal-github.gilesb.com/raganwaldをロードしてください。 javascriptコンソールで、次のように入力します。window.location = 'http://minimal-github.gilesb.com/raganwald'; サーバーからページが更新されます。今タイプしなさい:window.location = 'http://minimal-github.gilesb.com/raganwald#try_this'; ああ!ページを更新しません。タイプ:window.location = 'http://minimal-github.gilesb.com/raganwald#and_this'; まだ更新はありません。これらのurlがブラウザの履歴にあることを確認するには、戻るボタンを使用してください。ブラウザは、同じページにいるがアンカーを変更しただけなので、再読み込みされないことに気付きます。この振る舞いのおかげで、ブラウザには1つの「ページ」上にあるように見えるが、「戻る」ボタンを尊重するブックマーク可能なセクションが多数あるような単一のjavascriptアプリケーションを持つことができます。ユーザーが異なる「状態」を入力した場合、アプリケーションはアンカーを変更する必要があります。同様に、ユーザーが戻るボタン、ブックマーク、またはリンクを使用してアンカーを含めてアプリケーションを読み込む場合も、アプリケーションは適切な状態を復元する必要があります。アンカーは、javascriptプログラマにブックマーク可能、インデックス可能、および戻るボタンに優しいアプリケーションを作成するためのメカニズムを提供します。このテクニックには名前があります。それは シングルページインタフェース です。psこのテクニックには4つ目の利点があります。ajaxを介してページコンテンツをロードしてから現在のdomに挿入するほうが、新しいページをロードするよりもはるかに高速です。速度の向上に加えて、バックグラウンドで特定の部分をロードするなどのその他のトリックは、プログラマの制御下で実行できます。p.p.s.これらすべてを考慮すると、 'bang'または感嘆符は、まったく同じページをわずかに異なるurlでサーバーからロードできることをgoogleのwebクローラーにさらに示唆するものです。 ajax crawling を参照してください。もう1つの方法は、各リンクがサーバーアクセス可能なurlを指すようにしてから、目立たないjavascriptを使用してアンカー付きのspiに変更することです。ここでもまた重要なリンクです。 シングルページインターフェースのマニフェスト