布局组件 (Layout Component)
首先,让我们创建一个将在所有页面间共享的 布局 (Layout) 组件。
- 创建一个名为
components
的顶级目录。 - 在
components
目录中,创建一个名为layout.js
的文件,内容如下:
接着,打开 pages/posts/first-post.js
文件,导入 Layout
组件并将其作为最外层组件:
添加 CSS
现在,让我们为 Layout
组件添加一些样式。为此,我们将使用 CSS 模块 (CSS Modules),它允许你在 React 组件中导入 CSS 文件。
创建一个名为 components/layout.module.css
的文件,内容如下:
重要提示: 要使用 CSS 模块 (CSS Modules),CSS 文件名必须以
.module.css
结尾。
要在 components/layout.js
中使用这个 container
类,你需要:
- 导入 CSS 文件并为其命名,例如
styles
- 使用
styles.container
作为className
打开 components/layout.js
文件,将其内容替换为以下代码:
现在,如果你访问 http://localhost:3000/posts/first-post,应该会看到文本位于一个居中的容器内:
自动生成唯一类名
现在,如果你在浏览器的开发者工具中查看 HTML,会注意到由 Layout
组件渲染的 div
有一个类似 layout_container__...
的类名:
这就是 CSS 模块 (CSS Modules) 的功能:它会自动生成唯一的类名。只要使用 CSS 模块,你就不必担心类名冲突的问题。
此外,Next.js 的代码分割功能也适用于 CSS 模块 (CSS Modules)。它能确保为每个页面加载最少数量的 CSS,从而减小打包体积。
CSS 模块 (CSS Modules) 会在构建时从 JavaScript 包中提取出来,并生成由 Next.js 自动加载的 .css
文件。