六维教程

Astro 页面导航与链接

普通链接

Astro 模板就是 HTML,所以跳转页面直接用原生的 <a> 标签即可。

---
---
<a href="/about">关于我们</a>

构建后,Astro 会自动给站内链接做优化,比如加上预加载,让点击后切换更顺滑。

用组件封装导航

把导航写成一个组件,能避免每个页面重复写链接,新建 src/components/Nav.astro

---
// src/components/Nav.astro
---
<nav>
  <a href="/">首页</a>
  <a href="/about">关于</a>
  <a href="/blog">博客</a>
</nav>

在页面里引入使用。

---
import Nav from '../components/Nav.astro';
---
<Nav />
<main>这里是页面正文</main>

高亮当前页面

很多导航希望「当前所在页」有高亮样式,可以借助 Astro 内置的 Astro.url 判断。

---
const path = Astro.url.pathname; // 取当前访问路径,如 /about
---
<nav>
  <a href="/" class={path === '/' ? 'active' : ''}>首页</a>
  <a href="/about" class={path === '/about' ? 'active' : ''}>关于</a>
</nav>

Astro 是 Astro 在每个组件里自动提供的内置全局对象,Astro.url 是它上面的属性,表示当前网址,pathname 就是路径部分。

页面之间传递数据

静态页面之间一般通过网址参数或链接带 query 来传数据。

<a href="/search?q=astro">搜索 astro</a>

在目标页读取。

---
const keyword = Astro.url.searchParams.get('q'); // 读取网址 ?q= 后的查询参数
---
<p>你搜索的关键词是:{keyword}</p>
上一篇
Astro 页面与文件路由
下一篇
Astro 组件基础