๋ ์ด์์
์ UI์ ๋ฐฐ์น์ด๋ค. ์ฝ๊ฒ ๋งํด, Header, Navigation, Menu, Footer, Main ๋ฑ์ผ๋ก ํ๋ฉด์ ์ชผ๊ฐ๋ ์ผ์ ์๋ฏธํ๋ค.
์นํ์ด์ง๋ฅผ ๋ณด๋ฉด ํ์ด์ง๋ค์ ์ ์ฒด์ ์ธ ํฐ ํ(๋ ์ด์์)์ ๋์ผํ๊ณ , ์ธ๋ถ์ ์ธ ๋ด์ฉ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๋ฐ๋ผ์ ๋ ์ด์์
๋ง ์ ์ก์๋ ํ๋ก์ ํธ ์ ์ฒด์ ์ ์ง๋ณด์๊ฐ ์ฌ์์ง๋ค.
๊ทธ๋ฐ๋ฐ ํ์ด์ง๋ฅผ ๋ง๋ค ๋๋ง๋ค ๋ ์ด์์
์ ํ๋ํ๋ import ํด์ฃผ๋ ๊ฒ์ ์ข ๋ฒ๊ฑฐ๋กญ๋ค. ์ด๊ฑฐ๋ฅผ ํ๋ฒ์ ๋ง๋ค ์๋ ์์๊น?
header, navigation, banner, footer ๋ฑ์ ๊ณตํต component๋ฅผ ๋ง๋ค์ด์ฃผ๊ณ , ์ด๊ฒ๋ค์ ํ๋๋ก ์กฐ๋ฆฝํ๋ index ํ์ผ์ ๋ง๋ค์ด์ฃผ๋ฉด ๋๋ค!
// index ํ์ผ
export default function Layout(props:IProps) {
return(
<>
<LayoutHeader />
<LayoutBanner />
<LayoutNavigation />
<LayoutBodyWrapper>
<LayoutSidebar />
<LayoutBody>{props.children}</LayoutBody>
</LayoutBodyWrapper>
<LayoutFooter />
</>
)
}
์ฌ๊ธฐ์ props.children
์ ๋ณด์. ์ฐ๋ฆฌ๊ฐ ์ง๊ธ๊น์ง ์ฌ์ฉํ๋ props๋ ์๋ ๊ทธ๋ฆผ์ ์ผ์ชฝ ๋ถ๋ถ์ด๋ค. ํด๋น ํ๊ทธ์ ์์ ํ๊ทธ๋ค์ ๋ฐ๋ก ๋ช
์ํด์ฃผ์ง ์๋๋ผ๋, ์๋์ผ๋ก children์ด๋ ์ด๋ฆ์ผ๋ก props๋ก ๋์ด๊ฐ๋ค.
์ต์ข ์ ์ผ๋ก ๋ฐ๋์์ญ์ด ์ ์ฒด Layout์ children์ด ๋๋ฉฐ, ๋ชจ๋ ํ์ด์ง๋ ๋ฐ๋์์ญ์ ๋ํ๋๊ฒ ๋๋ค.
ํน์ ํ์ด์ง๋ ํน์ ๋ ์ด์์์ด ๋ณด์ด์ง ์์์ผ๋ฉด ํ ๋๊ฐ ์๋ค. ๊ทธ๋ด ๋์๋ ๊ทธ ๋ ์ด์์์ด ํน์ ํ์ด์ง์์ ๋ํ๋์ง ์๊ฒ ์กฐ๊ฑด์ ๊ฑธ์ด์ฃผ๋ฉด ๋๋ค.
const HIDDEN_HEADERS = [
"/12-05-modal-address-state-prev",
// ...
]
export default function Layout(props) {
const router = useRouter()
const isHiddenHeader = HIDDEN_HEADERS.includes(router.asPath);
return (
<Wrapper>
{!isHiddenHeader && <Header />}
<Banner />
<Navigation />
<BodyWrapper>
<Sidebar></Sidebar>
<Body>{props.children}</Body>
</BodyWrapper>
<Footer />
</Wrapper>
)
}
ํน์ ํ์ด์ง์์ Header ๋ถ๋ถ์ด ๋ณด์ด์ง ์์์ผ๋ฉด ํ๋ค๋ฉด, ๊ทธ ํ์ด์ง์ asPath ๊ฐ์ ๋ฐฐ์ด๋ก ๋ด์์ฃผ๊ณ , includes()๋ฅผ ์ฌ์ฉํด ๋ฐฐ์ด ๋ด ๊ฐ๊ณผ ํ์ฌ ํ์ด์ง์ asPath ๊ฐ์ ๋น๊ตํด์ ๋์ผํ์ง ์์ ๊ฒฝ์ฐ์๋ง Header๊ฐ ๋ณด์ด๊ฒ๋ ํ๋ฉด ๋๋ค.
์ด๋ฐ ์์ผ๋ก ๋ก์ง์ ๊ตฌ์ฑํด์ ํน์ ํ์ด์ง์์๋ ํน์ ๋ ์ด์์์ด ๋ํ๋์ง ์๋๋ก ํด์ค ์ ์๋ค.
๊ธ๋ก๋ฒ ์คํ์ผ์ ๋ชจ๋ ํ์ด์ง์ ์ ์ฉํ๋ ์คํ์ผ์ ์๋ฏธํ๋ค. ๋ชจ๋ ํ์ด์ง์ ๊ณตํต์ ์ผ๋ก ์ ์ฉ๋๋ ์ต์๋จ ํ์ผ์์ css๋ก ๊ธ๋ก๋ฒ ์คํ์ผ ์์ฑ์ ๋ถ์ฌํ๋ฉด ๋๋ค!
font๋ ์ง์ ๋ค์ด๋ฐ์ ํ์ผ ํน์ ์นํฐํธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
ํฐํธ๋ฅผ ๋ค์ด๋ก๋ ํ ๋์๋ ๊ฒฝ๋ํ๋ ํฐํธ(sub set font)
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค. ์ฉ๋์ด ๋๋ฌด ํฐ ํ์ผ์ด ๋ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค!
ํฐํธ๋ global style์์ ์ค์ ํด์ค ์ ์๋ค. @font-face
๋ฅผ ์ฌ์ฉํด์ ํฐํธ๋ฅผ ํธ์ถํ ์ด๋ฆ(font-family)์ ํฐํธ ๊ฒฝ๋ก(src)๋ฅผ ์ ์ธํ๊ณ , ํฐํธ๋ฅผ ์ฌ์ฉํ๋ ค๋ ํ์ด์ง์ style
๋ถ๋ถ์์
font-family: "ํฐํธ๋ช
"
๋ฅผ ์ฌ์ฉํด์ ์ ์ฉ์์ผ์ฃผ๋ฉด ๋๋ค.