Routing, Navigation, Layout, client, server components 등에 대해 배울 예정이다.
client, server 는 NextJS에서 나온 개념이라고 한다.
NextJS는 프레임워크라서, 올바른 폴더에 정확한 이름의 파일이 들어가 있으면 NextJS는 우리 코드를 이용해서 만들어 준다.
app 폴더 안에 page 파일을 찾는것 처럼.
그리고 꼭 export를 해야한다.
그리고 동시에 layout을 찾는다. 그래서 자동 생성된다. meta data라는 객체와 RootLauout는 html 바디 안에 body 태그를 갖는다.
/ -> <Home />
/about-us -> <AboutUs />
app 폴더 -> / (roote segment)
app폴더/about-us 폴더 -> /about-us
이렇게 된 경우 url 에서 /about-us/company에 접근하면 404 와 같다. page.tsx파일이 할당되지 않았기 때문이다.
"use client"
import Link from "next/link"
import { usePathname } from "next/navigation"
export default function Navigation(){
const path = usePathname();
return <nav>
<ul>
<li>
<Link href='/'>HOME</Link>
{path === '/' ? '💕':''}
</li>
<li>
<Link href='/about-us'>AboutUS</Link>
{path === '/about-us' ? '💕':''}
</li>
</ul>
</nav>
}
Link 라는 태그를 이용해 네비게이션을 구현한다.
현재 경로를 알기 위해선 usePathname을 이용한다. 이때 최상단에 use client
를 작성하지 않으면 에러가 난다.
왜그럴까? client component가 뭘까
평범한 react 가 렌더링 되는 방식은 client side application이다. 유저가 페이지에 도착한 시점에는 javascript를 모두 실행한 후 페이지를 렌더링 한다. html에 UI가 없는 시점에서 Javascript를 기다릴 때 빈화면이 보이게 된다. App을 실행하려면 JavaScript가 실행되어야만 한다.
client side rendering 단점
server side rendering 장점