Layout Component
İlk olarak, tüm sayfalarda paylaşılacak bir Layout bileşeni oluşturalım.
components
adlı bir üst düzey dizin oluşturun.components
içinde , aşağıdaki içeriğe sahip bir dosya oluşturunlayout.js
:
export default function Layout({ children }) {
return <div>{children}</div>;
}
Ardından pages/posts/first-post.js
açın, Layout
bileşen için bir içe aktarma ekleyin ve onu en dıştaki bileşen yapın:
import Head from 'next/head';
import Link from 'next/link';
import Layout from '../../components/layout';
export default function FirstPost() {
return (
<Layout>
<Head>
<title>First Post</title>
</Head>
<h1>First Post</h1>
<h2>
<Link href="/">
<a>Back to home</a>
</Link>
</h2>
</Layout>
);
}
Şimdi Layout
bileşene bazı stiller ekleyelim. Bunu yapmak için, CSS dosyalarını bir React bileşenine aktarmanıza izin veren CSS Modüllerini kullanacağız.
Aşağıdaki içeriğe sahip bir dosya oluşturun components/layout.module.css
:
.container {
max-width: 36rem;
padding: 0 1rem;
margin: 3rem auto 6rem;
}
Bu container
sınıfı içeride kullanmak için components/layout.js
de yapmanız gerekenler:
- CSS dosyasını içe aktarın ve ona bir ad atayın.
styles
className
içerisindestyles.container
olarak kullanın.
components/layout.js
İçeriğini açın ve aşağıdakiyle değiştirin:
import styles from './layout.module.css';
export default function Layout({ children }) {
return <div className={styles.container}>{children}</div>;
}
Şimdi http://localhost:3000/posts/first-post
adresine giderseniz, metnin şimdi ortalanmış bir kapsayıcının içinde olduğunu görmelisiniz:
Benzersiz Sınıf Adlarını Otomatik Olarak Oluşturur
Şimdi, tarayıcınızın geliştirme araçlarındaki HTML'ye bir göz atarsanız, bileşen tarafından oluşturulanın şuna benzeyen bir sınıf adına sahip olduğunu fark edeceksiniz layout_container__...
:
CSS Modüllerinin yaptığı budur: Otomatik olarak benzersiz sınıf adları oluşturur. CSS Modüllerini kullandığınız sürece, sınıf adı çakışmaları konusunda endişelenmenize gerek yoktur.
Ayrıca Next.js'nin kod bölme özelliği CSS Modüllerinde de çalışır. Her sayfa için minimum miktarda CSS yüklenmesini sağlar. Bu, daha küçük paket boyutlarıyla sonuçlanır.
CSS Modülleri, derleme sırasında JavaScript paketlerinden çıkarılır ve .css
Next.js tarafından otomatik olarak yüklenen dosyalar oluşturur.