서버사이드 렌더링(Server-side Rendering/SSR)은 ⬅︎ 요기
Next.js는
1) 모든 페이지를 pre-render(사전 렌더) 한다
html
파일을 생성한다2) 이렇게 생성된 html은 퍼포먼스 향상과
3) SEO 향상에 효과적이다
SEO: Search Engine Optimization의 약자로 검색 엔진 최적화를 의미한다.
meta
태그를 이용해description
,keywords
,author
,subject
,classification
등의 정보를 표기할 수 있으며, 검색엔진은 이런 정보를 적극적으로 활용한다.
meta
태그도 잘 보이고semantic
태그도 잘 보인다JS load
전에는 아무것도 확인되지 않는다.
JS
가 load
되어야 그 페이지 요소들을 채워나간다Next.js
처럼 pre-render
를 하게 되면 초기에 meta data
가 포함된 html
요소들이 페이지에서 확인된다.
JS
가 load
되고 <Link />
등의 컴포넌트 들이 작동한다. 이 것을 hydration 이라고 한다.Hydrate:
server Side
단에서 렌더링 된 정적 페이지와 번들링된 JS파일을 클라이언트에게 보낸 뒤,
클라이언트 단에서html
코드와React
인JS코드
를 서로 매칭 시키는 과정을 의미.Next.js
의 주요 동작 방식 중 하나.
미리 만들어
static html
을 제공
변경하고 나니,
import type { NextPage } from 'next';
import { getProducts } from './api/api';
const Home: NextPage = ({ list }: any) => {
return (
// ... 생략
);
};
export default Home;
export async function getStaticProps() {
const data = await getProducts();
return {
props: {
list: data,
},
};
}
.next
> sever
.next
> static
❓Dynamic Routing(동적 라우팅)은 static page를 미리 만들 수 없는걸까?
[id].ts
파일 같은 페이지는 보통 SSR 처리 되지만,export async function getStaticPaths() {
return {
paths: [
{ params: { id: '1' } },
{ params: { id: '2' } }
],
fallback: true // 없는 페이지 대한 대응 여부. 새로 정적 페이지를 만들게 된다..
}
}