Next.js의 작동원리를 찾고 Next.js의 Pre-Rendering 방법들을 나열 해 보았습니다.
packages/next/server/next.ts
// React JSX를 HTML파일로 렌더링
async renderToHTML(...args: Parameters<Server['renderToHTML']>) {
const server = await this.getServer()
return server.renderToHTML(...args)
}
[...]
// Pre-Rendering 을 위해 초기 정적페이지 전달
async serveStatic(...args: Parameters<Server['serveStatic']>) {
const server = await this.getServer()
return server.serveStatic(...args)
}
packages/next/client/index.tsx
// Hydrate 분기
if (shouldHydrate) {
ReactDOM.hydrate(reactEl, domEl)
shouldHydrate = false
} else {
ReactDOM.render(reactEl, domEl)
}