Next.js

๊ฐ€์žฅ ํฐ ๊ธฐ๋Šฅ์œผ๋กœ SSR ( Server Side Rendering )์„ React์—์„œ๋„ ์†์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ œ๊ณตํ•ด์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.

ํ•ซ ๋ฆฌ๋กœ๋”ฉ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๊ฐ์ง€ํ•˜์—ฌ ์„œ๋ฒ„ ์žฌ์‹œ์ž‘์—†์ด ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ๋ Œ๋”๋ง ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅธ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํŒŒ์ผ ๊ตฌ์กฐ

  • pages : ๊ธฐ๋ณธ page๋“ค์ด ๋“ค์–ด์žˆ๋Š” ํด๋”

    • index.js : Next๋ฅผ ์‹คํ–‰์‹œ ๊ฐ€์žฅ ์ฒ˜์Œ ์‹œ์ž‘๋˜๋Š” ๊ฒฝ๋กœ (์—†์œผ๋ฉด error)

    • _app.js : ๋ชจ๋“  ํŽ˜์ด์ง€์˜ ๊ณตํ†ต layout์„ ์ •์˜ํ•  ์ˆ˜์žˆ๋Š” ํŒŒ์ผ

    • _document.js : React์˜ index.html๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํŒŒ์ผ

    • _error.js : React์˜ error.html๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ

  • static : ์ด๋ฏธ์ง€๋‚˜ ํŠน์ • ํŒŒ์ผ๋“ฑ ์ •์  ํŒŒ์ผ์„ ์ €์žฅ

  • next.config.js : ํ™˜๊ฒฝ ์„ค์ • ํŒŒ์ผ

_app.js

  • ๊ณตํ†ต layout ์ •์˜

  • ๋ผ์šฐํŒ…์‹œ์— ์ƒํƒœ ์œ ์ง€

  • componentDidCatch์ด์šฉํ•˜์—ฌ ์—๋Ÿฌ ์žก๊ธฐ

์œ„์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋ฃจํŠธ ์ปดํฌ๋„ŒํŠธ์ด๋‹ค.

_document.js

๋ณดํ†ต React์˜ index.html ํŒŒ์ผ์„ ๋ณด๋ฉด <div id="root">๋ถ€๋ถ„์ด ์žˆ๊ณ  ์ด๊ฐ€ React ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์‹œ์ž‘ ๋˜๋Š” ์ตœ์ดˆ ์š”์†Œ๋กœ์จ ์ž‘์šฉ์„ ํ•˜๋Š”๋ฐ, _document.js์—์„œ๋Š” <Main />, <NextScript />๋ฅผ ํ†ตํ•ด ์•Œ์•„์„œ ๋งˆ์šดํŠธ๋ฅผ ํ•ด์ค€๋‹ค.

Last updated