バックボーン アプリケーションの出発点として、coenraets のEmployee Directoryを使用しています。最初にやりたいことは、ルーティングを変更して、hash-hash bang-bangs の代わりに HTML5 PushState を使用することです。
最初に私は変更しました:
<ul class="nav">
<li class="active"><a href="/">Home</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
それで:
Backbone.history.start({ pushState: true });
Navbarをクリックしたか、URL を手動で入力したかに関係なく、localhost:8000/contacts
代わりに404 エラーが表示されます。localhost:8000/#/contacts
私は何か間違ったことをしていますか?ありがとう。
更新: このコードを追加しましたが、[stateful]リンクをクリックすると正常に動作するようになりました。しかし、私がいる間にページを更新すると、localhost:8000/contacts
まだ 404 エラー[stateless]が表示されます。
$(document).on('click', 'a:not([data-bypass])', function(e){
href = $(this).prop('href')
root = location.protocol+'//'+location.host+'/'
if (root===href.slice(0,root.length)){
e.preventDefault();
Backbone.history.navigate(href.slice(root.length), true);
}
});
更新 2
上記のコードに加えて、Express.js アプリに次のルートを追加しました。よく見ると、URL バーが からlocalhost:3000/#contact
に変わってlocalhost:3000/contact
いることがわかりますが、これはかなり速い速度で行われます。もっと良い方法があるかもしれませんが、当面はこの方法で満足しています。
app.get('/contact', function(req, res) {
res.redirect('/#contact');
});