next.js pre-rendering ๋ฐฉ์์ ์ข ๋ฅ์ hydration๊ฐ๋ ๋ฐ ๊ด๋ จ ์ค๋ฅ์ ๋ํด ์ ๋ฆฌํด๋ณด์. ๋ ๋๋ง ๋ฐฉ์(CSR, SSR) CSR(Client Side Rendering): client์์ ๋ ๋๋ง ์ ์ ๊ฐ ์น์ฌ์ดํธ ๋ฐฉ๋ฌธ โ ๋ธ๋ผ์ฐ์ ์์ ์๋ฒ๋ก ์์ค(์ปจํ
์ค๋งํธ ์ปจํธ๋ํธ๋ฅผ ์ด์ฉํ์ฌ web3 nft dApp ํ์ด์ง๋ฅผ ๋ง๋ค์ด๋ณด์. Smart Contract ์ค๋งํธ ์ปจํธ๋ํธ๋ ๋ธ๋ก์ฒด์ธ์ ๋ฑ๋ก๋์ด ์๋ํ๋ ํ๋ก๊ทธ๋จ์ผ๋ก, ์๋ฉด์ผ๋ก ์ด๋ฃจ์ด์ง๋ ๊ธ์ต๊ฑฐ๋, ๋ถ๋์ฐ ๊ณ์ฝ, ๊ณต์ฆ ๋ฑ ๋ค์ํ ํํ์ ๊ณ์ฝ์ ์ฝ๋๋ก ๊ตฌํํ๊ณ ํน์ ์กฐ๊ฑด์ด ์ถฉ
v13 ๋ณ๊ฒฝ์ฌํญ์ ๋ํด ์์๋ณด์. app/ Directory *app/ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ beta๋ฒ์ ์ด๊ธฐ ๋๋ฌธ์ ์ค์ ํ๋ก๋์ ๋ ๋ฒจ์์๋ ๊ถ์ฅ๋์ง ์๋๋ค. ๊ธฐ์กด์๋ pages ๋๋ ํ ๋ฆฌ ์์ ํ์ผ์ ์์ฑํ์ฌ Automating Routing์ ์คํํ์ง๋ง, 13๋ฒ์ ๋ถํฐ๋
์ ๋ฐ์ดํธ๋ next.js 13๋ฅผ ์ฌ์ฉํด๋ณด์. (ํ๊ฒฝ์ค์ ํธ)next.js๋ react์์ SSR์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก Vercel์์ ๋ง๋ ํ๋ ์์ํฌ์ด๋ค.์ด๊ธฐ ์น์ฌ์ดํธ๋ ์ฌ์ฉ์๊ฐ ๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋ํ ๋๋ง๋ค ์๋ฒ์ ์์ฒญ์ ํด์ ์๋ก์ด html์ ๋ถ๋ฌ์ ๋งค๋ฒ ์๋ก๊ณ ์นจ๋
firebase ์ฌ์ฉํด์ ๊ฒ์ํ CRUD๊ธฐ๋ฅ์ ๋ง๋ค์ด๋ณด์. Firebase v9 firebase๋ ๋ฒก์๋ ๊ธฐ๋ฅ์ ํด๋ผ์ฐ๋ ์๋น์ค ํํ๋ก ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋ฐฑ์๋์์ด ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ๋ ์ฌ์ฉํ๋ฉด ์ ์ฉํ๋ค. firebase๊ฐ ๋ฒ์ ์ ๋ฐ์ดํธ๋ฅผ ํ๋ฉด์ ๋ฌธ๋ฒ ๋ฑ์ ๋ณํ๊ฐ ์
์ฐจ์ธ๋ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ฌ๋ฆฌ 'zustand'์ ๋ํด ์์๋ณด์. ํ๋ก ํธ ๋ถ์ผ๋ ๋ณํ๊ฐ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ๋ค. ๊ทธ ์ค์์๋ ํนํ ์ํ๊ด๋ฆฌ๋ ๋ค์ํ ํด๋ค์ด ๋ฑ์ฅํ๊ณ ๋ฐ์ ํด ๋๊ฐ๊ณ ์๋ค. ๊ฐ์ฅ ์ค๋๋๊ณ ์ ๋ช ํ ์ํ๊ด๋ฆฌ๋ฅผ ๋ ์ฌ๋ฆฌ๋ฉด ๋จ์ฐ '๋ฆฌ๋์ค'์ผ ๊ฒ์ด๋ค. ํ์ง๋ง ์์ฆ์๋ ์ฌ๋ฌ๊ฐ์ง ์ด
๋ฉํ๋ง์คํฌ ํ ์คํธ ๋คํธ์ํฌ์ ์ง๊ฐ์ฃผ์, ์๊ณ ๋ฅผ ํ๋ฉด์ ๋ฟ๋ ค๋ณด์. Web3-react๋? ๋ฆฌ์กํธ์์ web3์ Dapp๊ณผ ๊ด๋ จ๋ ํน์ ๋ฐ์ดํฐ๋ฅผ ์ต์ ์ํ๋ก ์ ์งํด์ฃผ๋ state machine์ผ๋ก ๊ธฐ๋ณธ ๋ธ๋ก์ฒด์ธ API๊ฐ ethers.js์ธ react ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. *w
๋ธ๋ก์ฒด์ธ์ ๊ฐ๋ ๊ณผ ๊ด๋ จ ์ฉ์ด๋ค์ ๋ํด ๊ณต๋ถํ๊ณ ์ ๋ฆฌํด๋ณด์. Web 3.0 web์ ์ญ์ฌ -web 1.0์๋ : 90๋ ๋ ์ด~2000๋ ๋ ์ค๋ฐ, read only -> ์ ์ ์์ ์ํธ์์ฉ์ด ์๊ณ , ์ ๋ณด์ ๋ฌ์ ๋ชฉ์ ์ด ๊ฐํจ. -web 2.0 : 2000๋ ๋ ์ค๋ฐ ~
DFS๊ฐ๋ ์ ์ฌ์ฉํด์ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด๋ณด์.<๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ์ ์ฌ๊ฐํ ๋ชจ์์ ์ง๋๊ฐ ์๋ค. 1์ ์ง์ด ์๋ ๊ณณ์, 0์ ์ง์ด ์๋ ๊ณณ์ ๋ํ๋ธ๋ค. ์ฒ ์๋ ์ด ์ง๋๋ฅผ ๊ฐ์ง๊ณ ์ฐ๊ฒฐ๋ ์ง์ ๋ชจ์์ธ ๋จ์ง๋ฅผ ์ ์ํ๊ณ , ๋จ์ง์ ๋ฒํธ๋ฅผ ๋ถ์ด๋ ค ํ๋ค. ์ฌ๊ธฐ์ ์ฐ๊ฒฐ๋์๋ค๋ ๊ฒ
์์ ํ์ ์ข ๋ฅ ์ค BFS, DFS์ ๋ํด์ ์์๋ณด์. DFS(๊น์ด ์ฐ์ ํ์) ์๋์ชฝ level๋ก ๋ด๋ ค๊ฐ๋ค๊ฐ ๋์ด์ ์๋ level์ด ์์ผ๋ฉด ๊ฐ์ฅ ๊ฐ๊น์ด ๋ถ๋ชจ ๋ ธ๋๋ก ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ ๋ค ํ์ํ์ง ์์ ๋ค๋ฅธ ์์ ๋ ธ๋๋ฅผ ํ์ํ๋ ๋ฐฉ์์ด๋ค. ํ์ ์์ ๋ ธ๋๋ฅผ ์คํ์ ์ฝ์
"Time Log" https://time-log.netlify.app/ ํ๋ก์ ํธ ์๊ฐ ์๊ฐ๊ธฐ๋ก Oauth ๊ตฌ๊ธ ์์ ๋ก๊ทธ์ธ์ ์ํด ๋ฐ๋์ ์์์ผ ํ๋ ๊ฐ๋ ์ผ๋ก, ์ฌ์ฉ์์ ํจ์ค์๋์์ด๋ ๊ถํ์ ์์๋ฐ์ ์ ์๋ ๊ธฐ์ ์ ๋งํ๋ค. Firebase ์ธ์ฆ ์ด๋ฒ ํ๋ก์ ํธ๋
๋ ๋ค๋ฅธ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ 'Recoil'์ ๋ํด์ ์์๋ณด์. Recoil? ํ์ด์ค๋ถ์์ ์ง์ ๋ง๋ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. Recoil ์ฌ์ฉํ๊ธฐ ์ ์ญ์์ ์ฌ์ฉํ ์ ์๋๋ก root์ recoilRoot ๊ฐ์ธ์ฃผ๊ธฐ atom ๊ธฐ์กด์ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฐ์ด๋
๋ฆฌ์กํธ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ server์์ ๋น๋๊ธฐ ๋ก์ง์ฝ๋๋ฅผ ์ค์ฌ๋ณด์.state๋ฅผ ๊ด๋ฆฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก server์ client ์ฌ์ด์ ๋น๋๊ธฐ ๋ก์ง๋ค์ ์ฝ๊ฒ ๋ง๋ค์ด์ฃผ๋ ๋๊ตฌ์ด๋ค.๊ทธ๋์ React Query๋ฅผ ์ฌ์ฉํ๋ฉด ๋ญ๊ฐ ์ข์๋ฐ?์ฒซ๋ฒ์งธ, ์ผ๋ จ์ ์ฝ๋๋ฅผ ํ ์ค์ฌ์ค๋ค. ๋ฐ์ด
์์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ๊ณต๋ถํด๋ณด์. ์์ ํ์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์๋ด๋ ๋ฐฉ๋ฒ์ด๋ค. ๋ชจ๋ ํ์ํ๊ธฐ ๋๋ฌธ์ ์ ๋ต์ 100% ์ฐพ์๋ผ ์ ์์ง๋ง, ๊ฒฝ์ฐ์ ์์ ๋ฐ๋ผ ์คํ์๊ฐ์ด ๋น๋ก๋๋ค. ์ฆ, ํ์ ๋ฒ์๊ฐ ๋๋ค๋ฉด ๊ทธ๋งํผ ์ฐพ์๋ด๋ ์ผ์ ํด์ผํ๊ธฐ ๋๋ฌธ์ ํจ์จ์
B๋ฅผ A์ฒ๋ผ ๋ณ๊ฒฝํด์ A๋ก ์ฌ์ฉํ์.์ฌํ๊ฐ ๋ ์ ์์ด ๋ค๋ฅธ ๊ณณ์์ ๊ธฐ๊ณ๋ฅผ ์ถฉ์ ํ๋ ค๋ฉด ์ ์์ ๋ฐ๊ฟ์ฃผ๋ ์ด๋ํฐ๊ฐ ํ์ํ๋ค.ํ๋ก๊ทธ๋๋ฐ์์๋ ๋ค๋ฅธ ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ํด๋ผ์ด์ธํธ์์ ์ฌ์ฉํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ, ์ฆ, ๋ค๋ฅธ ์ธํฐํ์ด์ค๋ก์ ๋ณํ์ด ํ์ํ ๋ ์ด๋ํฐ๊ฐ ํ์ํ๋ค.์ด๋ ์ฌ์ฉ
"import { Module } from" ๊ณผ "import Module from" ์ ์ฐจ์ด์ ์ ๋ํด ์์๋ณด์. import, export ๋ฌธ์ JavaScript ๋ชจ๋์์ ํจ์, ๊ฐ์ฒด, ์์ ๊ฐ์ ๋ด๋ณด๋ด๊ฑฐ๋ ๋ถ๋ฌ์ฌ ๋ ์ฌ์ฉํ๋ค.์ฌ๋ฌ ๊ฐ๋ค์ export/importํ
๋ค๋ฅธ ๋ ๋ฐฐ์ด์ ํ ๋ฐฐ์ด์ฒ๋ผ ๋ง๋ค์ด๋ณด์.ํ๋์ฝ๋ฉ๋ ๋ถ๋ถ์ ๋งต์ ๋๋ ค์ ์์๊ฒ ๋ง๋ค์ด๋ณด์.๋ชฉํ: ์๋ก ๋ค๋ฅธ ๋ ๋ฐฐ์ด์ ๊ฐ์ง๊ณ ํ๋์ ๋งต์ ๋๋ ค ํ๋ฉด์ ๋ํ๋ด์ผ ํ๋ค. \-> zip array ํ์ฉํ๊ธฐ์์์ ๊ฐฏ์๊ฐ ์ ํด์ ธ ์๋ ๋ฐฐ์ด, ํํํํ์ฐ์ ๋ฐ์ดํฐ์์ ํ์ํ ๋ถ๋ถ์
๋ฆฌ๋์ค๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ฃผ๋ ๐์ข ํฉ์ ๋ฌผ์ธํธ '๋ฆฌ๋์ค ํดํท'์ ๋ํด ์์๋ณด์.๋ฆฌ๋์ค๋ฅผ ์ฌ์ฉํ๋ค๋ณด๋ฉด ์ก์ ํ์ ,์ก์ ์์ฑํจ์, ๋ฆฌ๋์ ๋ฑ ๋ฐ๋ณต๋๋ ์ฝ๋,์ฆ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๋๋ฌธ์ ํผ๋ก๊ฐ์ ๋๋ ์ ์๋ค.์ด๋ ๋ฆฌ๋์ค ํดํท์ ์ฌ์ฉํ๋ฉด ์ฝ๋๋ฅผ ์ข ๋ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค