Created
May 28, 2023 18:18
-
-
Save khg0712/bee42f4a13eb822c28057624dc6a3c97 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// SSR 코드 | |
// packages/next/server/render.tsx | |
// renderToHTML의 인터페이스는 생략. | |
// https://github.com/vercel/next.js/blob/v12.3.4/packages/next/server/render.tsx#L351 | |
export async function renderToHTML() { | |
// CSR과 다르게 SSR에선 ServerRouter라는 별개의 class로 Router를 만든다. | |
// ServerRouter parameter는 생략. | |
const router = new ServerRouter() | |
// ... | |
// RouterContext.Provider에 SSR용 라우터 주입. | |
// https://github.com/vercel/next.js/blob/v12.3.4/packages/next/server/render.tsx#L624 | |
const AppContainer = ({ children }: { children: JSX.Element }) => ( | |
<RouterContext.Provider value={router}> | |
{/* AppContainer 자식 생략 */} | |
</RouterContext.Provider> | |
) | |
// ... | |
// SSR 결과 반환 | |
return new RenderResult( | |
chainStreams(streams).pipeThrough( | |
createBufferedTransformStream(postOptimize) | |
) | |
) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment