ハンドルバー付きの単一ページ アプリケーションを作成するために使用する予定のルーティング ライブラリである page.js を使い始めたところです。ルートを使用して、さまざまなハンドルバー テンプレートを呼び出します。これまでのところ、この機能は機能しており、期待どおりの速さです。
現在、ページを更新する (F5 キーを押す) か、URL をコピーして新しいタブに貼り付けると、404 not found エラーが発生するという問題が発生しています。アプリで作成した見つからないページを呼び出していません。
以下のコードは、https ://github.com/visionmedia/page.js/tree/master/examples/notfound のコピーです。
<!DOCTYPE html>
<html>
<head>
<title>Not Found</title>
<script src="/page.js"></script>
</head>
<body>
<h1>Not Found</h1>
<p></p>
<ul>
<li><a href="./">/</a></li>
<li><a href="./about">/about</a></li>
<li><a href="./contact">/contact</a></li>
<li><a href="./not-found">/not-found</a></li>
</ul>
<script>
page.base('/notfound');
page('/', index);
page('/about', about);
page('/contact', contact);
page('*', notfound);
page();
function index() {
document.querySelector('p')
.textContent = 'viewing index';
}
function about() {
document.querySelector('p')
.textContent = 'viewing about';
}
function contact() {
document.querySelector('p')
.textContent = 'viewing contact';
}
function notfound() {
document.querySelector('p')
.textContent = 'not found';
}
</script>
</body>
このページを更新すると、ローカルホストの 404 ページが表示されます。リンクhttp://127.0.0.1/notfound/aboutを使用すると、同じ結果が得られます。
私の質問は次のとおりです: page.js はブラウザーの更新、またはリンクを使用してアプリケーションの特定の部分にアクセスすることをサポートしていますか?
私が本当に問うべき質問は次のようなものです: Web サーバーは、アプリケーションをロードするページにすべてのナビゲーションをリダイレクトすることは可能でしょうか? 答えはイエスです。
ブラウザを更新するのが一般的なケースのようです。これに対する受け入れ可能な解決策は、更新の試行をキャッチして、メイン ページにリダイレクトすることです。リンクを使用してアプリケーションの特定の部分にアクセスすることは、それほど重要ではありませんが、いい感じです。