๐ค ์์งlog ๐ค
[NextJS] NextJS ๋ณธ๋ฌธ
์ค์น
npx create-next-app@latest .
npx create-next-app@latest --ts .
โ๏ธ
* name can no longer contain capital letters
๋ผ๋ ์๋ฌ๊ฐ ๋จ๋ฉด ํด๋๋ช ์ " ๋๋ฌธ์ " ๊ฐ ์์ด์ ๋จ๋๊ฒ์ด๋ฏ๋ก " ์๋ฌธ์ " ๋ก ๋ณ๊ฒฝ
npm run dev
์คํ
NextJS ์ React
react = library , CSR(client-side-rendering)
Nextjs = framework , SSR(server-side-rendering)
โ๏ธ CSR : ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง ์ด๋ ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ๋ผ ํ์ํ ๋ถ๋ถ๋ง ์๋ต ๋ฐ์ ๋ ๋๋ง ํ๋ ๋ฐฉ์
SSR : ์๋ฒ์ฌ์ด๋ ๋ ๋๋ง์ ์ฝ์๋ก ์๋ฒ๋ก๋ถํฐ ์์ ํ๊ฒ ๋ง๋ค์ด์ง htmlํ์ผ์ ๋ฐ์์ ํ์ด์ง ์ ์ฒด๋ฅผ ๋ ๋๋ง ํ๋ ๋ฐฉ์
๐ React์์๋ Router, render ๋ฑ ํ๊ฒฝ์ ์ธ ๊ฒ๋ค์ ์ง์ ์ฝ๋ ์์ฑํด์ ์คํ์์ผ์ค์ผ ํ๋ค๋ฉด,
NextJS๋ ๊ท์น์ ๋ง์ถฐ ์ฝ๋๋ง ์ ์์ฑํ๋ฉด ์๋์ผ๋ก ์ฝ๋๋ฅผ ๋ถ๋ฌ์ด
๐ React ์ฒ๋ผ ์์ ๋ก์ด ์์ ์ ๋ถ๊ฐํจ
๐ ์ ์ ์๊ฒ ๋ณด์ฌ์ฃผ๊ณ ์ถ์๊ฒ์ด ์์ผ๋ฉด pages ํด๋๋ด์ ํ์ผ ์์์ ๐ export default function ๐์ผ๋ก ํ๋ค.
๐ React๋ ์ค๋ฅํ์ด์ง (404 ๋ฑ)์ ์์ฑํด์ผํ์ง๋ง NextJS๋ default ํ์ด์ง๊ฐ ์กด์ฌํจ - ์์ ๊ฐ๋ฅ
๐ NextJS์์ npm run start ๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ์คํ ํ๋๊ฒ์ด ์๋๋ผ " ์ค ์๋ฒ "๋ฅผ ์คํํ๋๊ฒ์ด๋ค.
์๋ํ๋ฉด NextJS๋ ์๋ฒ๊น์ง ๋ด์ฅ๋์ด ์๋ all-in-one ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๐ API๋ฅผ ๊ตฌํํด์ React์ ๊ฒฐํฉํ๋ฉด ๊ฐ๋จํ๊ฒ ์๋ฒ๊ธฐ๋ฅ๊ณผ ํ๋ก ํธ์๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์์๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๋ค.
์ฅ์
๐ ์ฑ์ ์๋ ํ์ด์ง๋ค์ด ๋ฏธ๋ฆฌ ๋ ๋๋ง ๋จ - ์ ์ ์ผ๋ก ์์ฑ
React๋ ์ ์ ๊ฐ ๋ณด๋ ๋ชจ๋ UI๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ js๋ฅผ ๊ฐ์ ธ์์ ๊ทธ js๊ฐ ๋ชจ๋ UI๋ฅผ ๋ง๋ ๋ค. html์ ๋น์ด์๋ <div> ํ๋๋ฟ์ด ๋ค. (๋๋ฆฐ ์ฐ๊ฒฐ์์ ํฐ ๋จ์ ์ด ์๊น- ๋น ํ๋ฉด๋ง ๋ณด์ธ๋ค ๋ฑ )
NextJs์ ์์ค์ฝ๋๋ ์ด๊ธฐ์ํ๋ก(HTML) pre-rendering์ ํจ ( ๋๋ฆฐ์ฐ๊ฒฐ์์๋ HTML์ ๋ณผ์์๋ค. - API๋ฅผ ์ ์ธํ ๋ค๋ฅธ๊ฒ๋ค์ ๋ณผ ์์์) ๊ทธํ์ React.js๊ฐ ํด๋ผ์ด์ธํธ๋ก ์ ์ก๋์์๋ react app์ด ์คํ ๋๋ค. React.js๋ฅผ ํ๋ก ํธ์๋ ์์์ ์คํํ๋ ๊ฒ์ โhydration ์ด๋ผ ๋ถ๋ฅธ๋ค.
๐ NextJS๋ ReactJS๋ฅผ ๋ฐฑ์๋์์ ๋์์์ผ์ ์ด ํ์ด์ง๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋๋๋ฐ(ssr) ์ด๊ฒ component๋ฅผ ๋ฏธ๋ฆฌ ๋ ๋๋ฅผํ๊ณ , ๋ ๋๋ง์ด๋๋๋ฉด HTML์ด ๋๊ณ , ๊ทธ HTML์ ์์ค์ฝ๋์ ๋ฃ์ด์ค๋ค. ๊ทธ๋ผ ์ ์ ๋ ๋ก๋ฉ์ด ๋์ง์์์๋ ๋ฏธ๋ฆฌ HTML์ ๋ณผ์ ์๋ค. ๊ทธ๋์ SEO์ ์ข์๊ฒ. (๋ก๋ฉ์ด ๋๊ธฐ์ ์ ์์ค์ฝ๋๊ฐ ์ด๋ฏธ ์๊ธฐ ๋๋ฌธ์)
โ๏ธ ๊ฒ์์์ง์ต์ ํ (Search Engine Optimization) : ๊ฒ์์ ํ๋ฉด ๊ฒ์์์ง์ ์ธ๋ฑ์ฑํด๋ ์๋ง์ ์น ํ์ด์ง ์ค ๊ฐ์ฅ ์ ํฉํ ์์๋๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ ธ์ถํ๋๋ฐ ๊ทธ์ค ์์ ์ ์น ํ์ด์ง๊ฐ ๋ ๋ง์ด ๋ ธ์ถ๋๋๋ก ์ต์ ํ๋ ์ปจํ ์ธ ๋ฅผ ๋ง๋๋ ๊ฒ
RULES
โญ๏ธ page ํด๋๋ด์ ํ์ผ๋ช ์ด url์ด ๋จ (์๋ฌธ์๋ก ์์ฑ) / ํ์ผ๋ด์ component ์ด๋ฆ์ ์ค์ํ์ง ์์! โญ๏ธ
๐ ํจ์ํ ์ปดํฌ๋ํธ์์ jsx ๋ฅผ ๋ฆฌํดํ๋ default export ํจ์๋ ํจ์์ ์ธ๋ฌธ์ผ๋ก ์ ์ํ๋ค.(= export default function ) ๊ทธ ์ธ ํจ์๋ค์ ํ์ดํ ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
๐ NextJS์์๋ anchorํ๊ทธ( < a > )๋ฅผ ์ฌ์ฉํ์ง์๋๋ค.
โ React์ Link์ ๊ฐ์. (์๋ก๊ณ ์นจ๋ฐฉ์ง)
โ next/link์ Link href๋ฅผ ์ฌ์ฉ
โ clinet side rendering์ด ๊ฐ๋ฅํ์ง๋ง className, style ๋ฑ์ ๋ฃ์ด์ค๋๋ < Link >< /Link> ์ aํ๊ทธ์์ ํด์ค์ผํ๋ค.
'๐ท Next JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[NEXTJS] ์๋ฒ์ฌ์ด๋ ๋ ๋๋ง์ ๋ฐ์ํ๋ html ๋งค์นญ ๋ฌธ์ (0) | 2023.02.21 |
---|---|
[NextJS] NextJS ์์ window ๊ฐ์ฒด๊ฐ ์๋ค๊ณ ํ ๋ (0) | 2023.01.05 |
[NextJS] NextJS์์ ์ปดํฌ๋ํธํ์์ผ๋ก SVG์ฌ์ฉํ๊ธฐ (0) | 2022.12.05 |
[NextJS] NextJS์์ Styled-components ์ฌ์ฉํ๊ธฐ (0) | 2022.12.05 |
[NextJS] NextJS_CSS (0) | 2022.10.06 |