0

JQuery を使用して SPA Web サイトを作成しようとしています。使い方はわかったのですが、いくつか質問がありますhistory.pushState$(window).on('popstate')現在、popstate イベントとナビゲーション リンクを処理する router.js ファイルがあります。リンクをカスタム属性 (data-navId="templates/page/page.html") または href に配置し、 $(e).preventDefault(); . ユーザーがリンクをクリックすると$('.page-content').load('url', function() {})history.pushstate実行されます。

1) これらの関数を含む router.js ファイルをすべてのテンプレートに含める必要がありますか? これらの関数のみを含む 1 つの html が必要です。テンプレートには、HTML とそれに対応するスクリプトのみを含める必要があります。私はなんとかそれを達成しましたが、ユーザーがページを更新すると、テンプレートはスタイリングなどなしで表示されます。答えはハッシュを使用していますか?または、ユーザーがブラウザを閉じて [前のページを復元] オプションを有効にすると、テンプレートは HTML のみで読み込まれます。

popstate以前は、 andのみを使用してハッシュなしで SPA ページを開発しましhistory.pushStateたが、各ファイルにすべての html を含めてから$('.page-content').load(url + ' .page-content > *', function() {});、更新のバグを回避するために呼び出す必要がありました。

また、Facebook がpopstate最新のブラウザーとhashchange古いブラウザーに使用することは、おそらく Modernizr.js またはカスタム ライブラリを含めることで知っています。しかし、すべてのテンプレートにルーターを含めずに、ルーターはどのように機能するのでしょうか?

前もって感謝します。

4

1 に答える 1