1. このページの目的
barba.js v2 (pjax) を使ってみる。
(PJAX は、ドキュメント通りに書いても動かないのでやめた。)
2. デモ
この部分は切り替わらない。
3. このページで使っているコード
<script defer src="https://unpkg.com/@barba/core"></script>
- https://unpkg.com/@barba/core@2.9.7/dist/barba.umd.js (9.3kB) にリダイレクトさせられる。
<div data-barba="wrapper">
<p>この部分は切り替わらない。</p>
<div data-barba="container" data-barba-namespace="home">
<h3>最初のページです。</h3>
<p>この部分の内容は切り替わる。</p>
<p><a href="./foo.php">./foo.php</a></p>
</div>
</div>
data-barba="container"
の部分が切り替わる。- ページ遷移のリンクが必要。
<script>
barba.init({
// ...
})
</script>
<div data-barba="wrapper">
<div data-barba="container" data-barba-namespace="sample-page">
<h3>foo.php</h3>
<p><a href=".">最初のページへ</a></p>
</div>
</div>
4. PHPの場合のコード例
ヘッダ・フッタ部分はどのページでも共通なので template.php に任せ、各ページの php ファイルにはメインとなるコンテンツだけを書くような構成にする。
<?php
if (!isset($content)) {
exit();
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
...
</head>
<body>
<header>
<h1>...</h1>
</header>
<?php echo $content; ?>
<footer>
...
</footer>
<script defer src="https://unpkg.com/@barba/core"></script>
<script>
window.addEventListener('DOMContentLoaded', (event) => {
barba.init({
// ...
});
});
</body>
</html>
<?php
$content = <<<EOT
<main data-barba="container" data-barba-namespace="home">
<h3>最初のページです。</h3>
<p>この部分の内容は切り替わる。</p>
<p><a href="./foo.php">foo.php</a></p>
</main>
EOT;
require __DIR__ . '/template.php';
<?php
$content = <<<EOT
<main data-barba="container" data-barba-namespace="home">
<h3>foo.php ページです。</h3>
<p>この部分の内容は切り替わる。</p>
<p><a href=".">Home</a></p>
</main>
EOT;
require __DIR__ . '/template.php';
5. メモ
CWV への影響
- https://unpkg.com/@barba/core のサイズ (9.3kB) は小さく、処理も小さいので影響は小さいと思われる。本ページを解析した分には小さかった。
6. 参考
- barba.js
- barbajs/barba (GitHub)