๐บ Front End71 [Next.js] _document.js๋ก ๋ ์ด์์ ํ ํ๋ฆฟ์ ์ฌ์ฉํด์ html ๊ณผ body ํ๊ทธ ์ปค์คํฐ๋ง์ด์ง ํ๊ธฐ. Document ์ปดํฌ๋ํธ Next.js์๋ ํ๊ทธ์ ํ๊ทธ๋ฅผ ์กฐ์ํ๊ธฐ ์ํด์ ์ปดํฌ๋ํธ๋ฅผ ์ ๊ณตํ๋ค. Build ์์ ์ _document.jsํ์ผ์ pages ๋๋ ํ ๋ฆฌ ์์์ ํ์ํ๊ณ ๋ฅผ extends ํ ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํด์ ์ปค์คํ ์ค์ ์ ๋ฐ์๋คํ๋๋ฐ, ์ด๋ ํ์ ํ์ผ์ ์๋๋ฉฐ, ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ์ปค์คํ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ Next์ ๋ชจ๋์ ์กด์ฌํ๋ _document.js ํ์ผ์ ์คํ์ํจ๋ค. ํ๋ก์ ํธ๊ฐ ์ปค์ง ์๋ก HTML ํ๊ทธ๋ฅผ ์กฐ์ํด์ผํ ์ผ๋ค์ด ๋ง์์ง๋ฏ๋ก ์ฐ๋ฆฌ๋ _document.js์ ์ปดํฌ๋ํธ๋ฅผ ๋ค๋ฃฐ ์ ์๋ ๋ฅ๋ ฅ์ด ์์ด์ผ ํ๋ค. ๊ธฐ๋ณธ ๊ตฌ์กฐ pages ๋๋ ํ ๋ฆฌ ์๋์ _document.jsํ์ผ์ ์์ฑํ๋ค. import Document, { Html, Head, Main, NextScript } from 'next/d.. 2021. 1. 3. [Next.js] renderPage ํจ์๋ก styled-components ์ค๋ฅ ๋ฐฉ์งํ๊ธฐ. React ์์ ์คํ์ผ๋ง์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ๊ฐ์ธ์ ์ผ๋ก ๋จ์ฐ styled-components๊ฐ ์๋์ ์ผ๋ก ์ข๋ค๊ณ ์๊ฐํ๋ค. ํ์ง๋ง Next์์๋ styled-components๊ฐ ์ ๋๋ก ๋์ํ์ง ์์ ์ ์๋ค. ์ค๋ ๊ทธ ์ค๋ฅ๋ค์ ๋ถ์ํด๋ณด๊ณ ์ด๋ป๊ฒ ํ๋ฉด ํด๊ฒฐํ ์ ์๋์ง ์์๋ณด์. ๊ทธ๋ฅ styled-components๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ด๋ค ๋ฌธ์ ๊ฐ ์๊ฐ๋์? Next.js ์ฑ์์ styled-components๋ฅผ ์ฌ์ฉํ๋ฉด ์คํ์ผ์ด ์ ์ฉ๋์ง ์๊ณ ์ผ์ ์๊ฐ ์ดํ์ ์คํ์ผ์ด ์ ์ฉ๋๋ค. ๋ง์น CSS ํ์ผ์ด ๋ก๋๋์ง ์๋ค๊ฐ ๊ฐ์๊ธฐ ๋ก๋๋๋ ๊ฒ ์ฒ๋ผ ๋ณด์ด๋๋ฐ, ์ด๋ UX์์ ๋์ ํ๊ฐ๋ก ๊ฐ์ธ๋ ์ ์๊ณ ์ฌ์ฉ์์๊ฒ ์์ฃผ ๋ถ์พํ ๊ฒฝํ์ ์ ์ฌํ ์ ์๋ค. ์ ๊ทธ๋ฐ ๋ฌธ์ ๊ฐ ์๊ธฐ๋์? Next๋ ์ฐ์ ๋ชจ๋ ํ์ด์ง๊ฐ Pre-R.. 2021. 1. 3. [styled-components] ThemeProvider์์ MediaQuery๋ฅผ ์ ์ฉํ๋ 2๊ฐ์ง ๋ฐฉ๋ฒ ์ด ๊ธ์ Styled-components์ ThemeProvider์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ ํ ์ง์์ด ํ์ํฉ๋๋ค. ํน์ ThemeProvider์ ๋ํ ์ ๋ณด๋ฅผ ํ์ธํด๋ณด๊ณ ์ถ๋ค๋ฉด ThemeProvider๋ก ๊ณตํต ์คํ์ผ ์์ฑ ๊ด๋ฆฌํ๊ธฐ๋ฅผ ๋ฐฉ๋ฌธํด์ ๊ฐ๋ณ๊ฒ ์ฝ๊ณ ์๋ณด์ธ์. ๊ทธ๋ผ ๋ ๋์์ด ๋ ๊ฑฐ์์ :) ์ด๋ค ์ข ๋ฅ์ ์ธ์ด๋ ๋๊ตฌ๊ฐ ๋์๋ ์น ํ๋ก ํธ์ ์คํ์ผ๋ง์ ํ๋ ๊ณผ์ ์๋ ๋ง์ ๋ ธ๋ ฅ๊ณผ ํ์ด ๋ค์ด๊ฐ๋ค. ๊ทธ ์ค์์๋ ๋ชจ๋ฐ์ผ๊ณผ ์น์ ์คํ์ผ์ ๋ฐ๋ก ๋๋๋ ๋ฏธ๋์ด ์ฟผ๋ฆฌ ๋ถ๋ถ์์ ๊ต์ฅํ ๋ฐ๋ณต๋๋ ์์ ์ ๋ง์ด ํ๊ฒ ๋๋๋ฐ, ์ด ์์ ์ ์ฐ๋ฆฌ๋ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์๋ค. ๋ฐ๋ก ThemeProvider. ์ค๋์ ์ด ThemeProvider๋ฅผ ํตํด์ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ์ข ๋ ์ฝ๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณผ ๊ฒ์ด๋ค. ๊ทธ ์ ์ ๋ฏธ๋์ด ์ฟผ๋ฆฌ.. 2021. 1. 2. [styled-components] ThemeProvider๋ก ๊ณตํต ์คํ์ผ ์์ฑ ๊ด๋ฆฌํ๊ธฐ. ์ง๋ ์ฌ์ด ๋๋์๊ฒ ํผ์๋ ธ ์ฐ์ต์ค ํ์ด์ง ๋ง๋ จํด์ฃผ๊ธฐ ํ๋ก์ ํธ๋ฅผ ์ํํ๋ฉด์ ๊ฐ์ฅ ํฌ๊ฒ ๋๊ผ๋ ์ ์ ๋ฐ๋ก css์์์ ํต์ผ์ฑ์ด ์๋ค ๋ผ๋ ๊ฒ์ด์๋ค. ์ฝ 15๊ฐ์ ์ปดํฌ๋ํธ์ 12๊ฐ์ ์น์ ๊ณผ 3๊ฐ์ ํ์ด์ง๋ก ์ด๋ฃจ์ด์ง ๋ฆฌ์กํธ ์ฑ์ ๋ง๋ค๋ฉด์ ๊ฐ๊ฐ์ ์ปดํฌ๋ํธ์ ๋ง๋ style.js ํ์ผ์ ์์ฑํ๋ค. ํ์ง๋ง ๊ทธ ๋น์์๋ CSS๋ฅผ ๊ณตํต์ผ๋ก ๊ด๋ฆฌํ ์๊ฐ๋ณด๋ค๋ ๋น ๋ฅด๊ฒ ํ๋ก์ ํธ๋ฅผ ๋๋ด๊ณ ์ถ์ ๋ง์์ด์์ด์ ๊ณตํต ์คํ์ผ์ ๊ดํ ์๊ฐ์ ์ฌ์ ๊ฐ ์์๋ค. ๊ทธ๋๋ ๋ง์ ํ์ผ ์ ๋ถ์์ด ์์๋๋ฐ, ๊ทธ ๋ถ์์ด ๊ฐ์ ธ์ฌ ๋ฌธ์ ์ ์ ๋ค์๊ณผ ๊ฐ๋ค. ๋งค ์ปดํฌ๋ํธ๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์คํ์ผ ์ฝ๋์ ์ผ๊ด์ฑ์ด ๋จ์ด์ง๋ค. => ์ ์ง๋ณด์ ๋น์ฉ์ ์ฆ๊ฐ ์คํ์ผ ์์ฑ๊ฐ๋ค์ด ์ค๊ตฌ๋๋ฐฉ์ด๋ผ ์ด๋ค ์์ฑ์ ๊ฐ๊ณ ์๋์ง ์ฝ๋๋ก ํ์ธ์ด ์ด๋ ต๋ค => ํ์ ์์์ ๋ฌธ์ ์คํ์ผ๋ง๋ค ๋ค๋ฅธ ์์ฑ.. 2021. 1. 2. ์ ์งํ๊ฒ ๋ฐฐ์๋ณด๋ Next.js ์๋ฆฌ์ฆ๋ฅผ ์์ํฉ๋๋ค. ํด๋น ๋ธ๋ก๊ทธ ์๋ฆฌ์ฆ๋ ์ ์งํ๊ฒ ๋ฐฐ์๋ณด๋ Next js ์๋ฆฌ์ฆ๋ก์จ ์ด 8๋ถ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. Next.js๊ณต์ ํํ์ด์ง์์ ์ด์ผ๊ธฐํ๋ ๋ด์ฉ์ ์ต๋ํ ์ดํดํ๊ธฐ ์ฝ๊ณ ์ง๊ด์ ์ด๊ฒ ๊ตฌ์ฑํ์์ต๋๋ค. ์๋ ํ์ธ์! ์ฃผ๋์ด ๊ฐ๋ฐ์ ์ฅ์์ต์ ๋๋ค. ์ ์งํ๊ฒ ๋ฐฐ์๋ณด๋ Next.js ์๋ฆฌ์ฆ๋ฅผ ์์ํฉ๋๋ค. ๋ณธ ๋ด์ฉ์ ๊ณต์ ๋ฌธ์์ ๊ต์ก ๋ฐฉํฅ์ ์ต๋ํ ์งํค๋ ค ๋ ธ๋ ฅํ์ผ๋ฉฐ Next๋ฅผ ๋ฐฐ์ฐ๊ณ ์ถ์ดํ๋ ๋ชจ๋ ์ด๋ณด์๋ค์๊ฒ ๋์์ด ๋๋ ๊ธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋์ ๋ ์ Next.js๋ฅผ ๋ฐฐ์๋ณด๊ณ ์ถ์ ์ฌ๋. SEO ๋ฅผ ํ๊ธฐ ์ํด ๋ค์ํ ์ ๋ณด๋ฅผ ์ฐพ๊ณ ์๋ ์ฌ๋. SSR๊ณผ SSG๋ฅผ ๋ฆฌ์กํธ ํ๋ก์ ํธ์์ ์ฌ์ฉํด๋ณด๊ณ ์ถ์ ์ฌ๋. ํ์ ์ญ๋ React ๊ฐ๋ฐ ๊ฒฝํ styled-components ๊ฐ๋ฐ ๊ฒฝํ (Optional) ํ์ ์ญ๋์ ๋ฆฌ์กํธ ๊ฐ๋ฐ ๊ฒฝํ.. 2020. 12. 31. ์ ์งํ๊ฒ ๋ฐฐ์๋ณด๋ Next.js ์๋ฆฌ์ฆ๋ฅผ ๋ง์น๋ฉฐ... ํด๋น ๋ธ๋ก๊ทธ ์๋ฆฌ์ฆ๋ ์ ์งํ๊ฒ ๋ฐฐ์๋ณด๋ Next js ์๋ฆฌ์ฆ๋ก์จ ์ด 8๋ถ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. Next.js๊ณต์ ํํ์ด์ง์์ ์ด์ผ๊ธฐํ๋ ๋ด์ฉ์ ์ต๋ํ ์ดํดํ๊ธฐ ์ฝ๊ณ ์ง๊ด์ ์ด๊ฒ ๊ตฌ์ฑํ์์ต๋๋ค. 0. ๋ชฉ์ฐจ 1. create-next-app์ผ๋ก next ๊ฐ๋ฐ ํ๊ฒฝ ์ธํ ํ๊ธฐ 2. create-next-app์์ ๋ง๋ ์ฒซ ๋ฒ์งธ ํต์ฌ pages. ๊ทธ๋ฆฌ๊ณ ๋์ ๋ผ์ฐํ 3. ํ์ด์ง๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ํ Link-Component ๊ทธ๋ฆฌ๊ณ Pre-Fetch Dynamic Routing๊ณผ Link๋ฅผ ์ด์ฉํด ๊ฐ๋จํ ๊ฒ์ํ์ ๋ง๋ค์ด๋ณด์. 4. Next.js์์ head ํ๊ทธ๋ฅผ ์กฐ์ํ๋ ๋ฉ์ง ๋ฐฉ๋ฒ ๋ฒ์ธ & ์ค์ต) ์ด๋ฏธ์ง์ ๋์์์ ์ ์ฅํ๊ณ ์ฌ์ฉํด๋ณด์. 5. ์น์ ๋ฐ์ ๊ณผ์ ์ผ๋ก ๋ณด๋ SSG์ SSR 6. next์ ๋ ๋ฒ์งธ ํต์ฌ P.. 2020. 12. 31. ์ด์ 1 2 3 4 5 ยทยทยท 12 ๋ค์