佈局元件 (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
檔案。