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
が実行されます。Jquery SPAの実装の理解
1)これらの 機能を含むrouter.jsファイルをすべてのテンプレートに含める必要がありますか?私はこれらの 関数を含むhtmlを1つだけ必要とします。テンプレートにはHTMLとそれに対応するスクリプトの のみが含まれている必要があります。私はそれを達成することができましたが、ユーザー がスタイリングや何もせずにテンプレートを表示するページを更新する場合。 はハッシュを使っていますか?または、ユーザーがブラウザを閉じて の「以前のページを復元する」オプションを有効にすると、テンプレートは のHTMLのみで読み込まれます。過去には
私だけpopstate
とhistory.pushState
を使用してハッシュすることなく、SPAのページを開発しましたが、私は、各ファイルのすべてのhtmlを含め、その後、リフレッシュバグを回避するために$('.page-content').load(url + ' .page-content > *', function() {});
を呼び出す必要がありました。
最新のブラウザではpopstate
、おそらくModernizr.jsやカスタムライブラリを含めれば、hashchange
の方が古いかもしれません。しかし、どのようにルータはすべてのテンプレートにそれを含めることなく動作しますか?
ありがとうございます。