4 • 通过可复用的页面布局节省时间和精力
编写你的第一个布局
准备好…
- 将常见元素重构为页面布局
- 使用 Astro 的
<slot />
元素将页面内容放置在布局中
- 将页面特定的值作为 props 传递给布局
你现在仍然在每个页面上重复渲染一些 Astro 组件。让我们再次重构,创建一个共享的页面布局!
-
创建一个新文件:src/layouts/BaseLayout.astro
(你需要首先创建一个 layouts
文件夹)。
-
将 index.astro
的全部内容复制到你的新文件 BaseLayout.astro
中。
-
使用以下代码替换 src/pages/index.astro
中的代码:
-
再次查看浏览器预览,注意到发生了什么变化(或者直接剧透:没有变化!)。
-
在 src/layouts/BaseLayout.astro
的页脚组件上方添加一个 <slot />
元素,然后查看你的首页在浏览器的预览中真正发生了什么变化!
<slot />
允许你将写在开放和闭合 <Component></Component>
标签之间的子内容注入(或者说是「插入」)到任何 Component.astro
文件中。
-
使用组件属性将页面标题从 index.astro
传递给你的布局组件:
-
将 BaseLayout.astro
布局组件的脚本更改为通过 Astro.props
接收页面标题,而不是将其定义为常量。
-
检查你的浏览器预览,验证你的页面标题没有改变。它具有相同的值,但现在是动态渲染的。现在,每个独立的页面都可以指定自己的标题给布局。
重构你的其他页面(blog.astro
和 about.astro
),使它们使用你的新的 <BaseLayout>
组件来渲染共同的页面元素。
不要忘记:
-
Astro 组件(.astro
文件)可以用作:
-
要在页面上显示页面,你可以
-
可以通过以下什么方式将信息从一个组件传递到另一个组件: