Today, What I learned? ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ํจํค์ง ๊ด๋ฆฌ ์์คํ Yarn Berry์ ๋ํด์ ์ ๋ฆฌํด ๋ณธ๋ค. Yarn Berry๋ ํ์ฌ ํ ์ค ํ๋ก ํธ์๋ํ์์๋ ์ฌ์ฉ ์ค์ธ ํจํค์ง ๋งค๋์ !.. Yarn Berry ? ๊ฐ์ฅ ๋ฒ์ฉ์ ์ผ๋ก ์ฌ์ฉ๋๊ณ ์๋ npm์ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ ๋ฌธ์ ์ ์ด ์๋ค. ๋นํจ์จ์ ์ธ ์์กด์ฑ ๊ฒ์ (๋ชจ๋ ํจํค์ง๋ฅผ node_modules ๋ด๋ถ์์ ํ์ํจ) ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋์ (์ด๋ค node_modules๋ฅผ ํฌํจํ๊ณ ์๋๋์ ๋ถ๋ฌ์ฌ ์ ์๋ ์์กด์ฑ์ด ๋ค๋ฅด๋ค.) ํฌ๊ณ ๋ณต์กํ node_modules ๊ตฌ์กฐ ๋ฑ๋ฑ.. Yarn Berry๋ ์ด๋ฐ ๋ฌธ์ ๋ค์ Plug'n'Play๋ผ๋ ์ ๋ต์ ํตํด ํด๊ฒฐํ๋ค. ๊ด๋ จํด์๋ ํ ์ค ๊ธฐ์ ๋ธ๋ก๊ทธ์ ์ ๋ฆฌ๊ฐ ์์ฃผ ์ ๋์ด์๋ค!.. https://toss.tech/..
Today, What I learned? ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๊ฐ์ ๊ธฐ์ ์คํ์ ํ๋์ฉ ๋งก์์ ์ด๋ค ์คํ์ ์ ํํ๋ฉด ์ข์์ง ๊ณ ๋ฏผํด ๋ณด๋ ๊ธ์ ์์ฑํด ๋ณด๊ธฐ๋ก ํ๋ค. ๋๋ ์คํ์ผ๋ง๊ณผ ๊ด๋ จํ์ฌ Emotion, Styled-Component, SCSS๋ฅผ ๋น๊ตํด ๋ณด์๋๋ฐ ์ข ๋ค๋ฌ์ด์ ์ฌ๋ ค๋ณธ๋ค. ๐ฅ Emotion vs Styled-components ๐ ๊ธฐ๋ฅ ๋น๊ต ์ ๋ฐ์ ์ผ๋ก ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ๋ฅ์ ๊ฑฐ์ ๋น์ทํ๋ค๊ณ ๋ณผ ์ ์๋ค. ์ฐธ๊ณ : https://github.com/jsjoeio/styled-components-vs-emotion GitHub - jsjoeio/styled-components-vs-emotion: a short doc comparing the popular CSS-in-JS libraries s..
Today, What I learned? ์ฝ๋๋ฆฌ๋ทฐ ํผ๋๋ฐฑ ์ค ํ๋์๋ ์๋๊ฒฝ๋ก๋ฅผ ์ ๋๊ฒฝ๋ก๋ก ๋ณ๊ฒฝํด ๋ณด๊ธฐ ๋์ ๊ณผ์ ์ ๊ธฐ๋กํด ๋ณธ๋ค.. ๐ ํ์ ์คํฌ๋ฆฝํธ์ CRA๋ก ๋ง๋ค์ด์ง ํจํค์ง๋ค๋ณด๋ ๋ณ๊ฒฝํด ๋ณด๊ธฐ๊ฐ ๋ ์ฌ๊ฐ ์ฌ์ด ์ผ์ด ์๋์๋ค!.. ์ฒซ ์๋ ์ฒ์์ tsconfig.json์ baseUrl๊ณผ paths๋ฅผ ์ถ๊ฐํด์ฃผ์๋ค. ํ์ง๋ง CRA๋ก ์์ฑ๋ ํ์ ์คํฌ๋ฆฝํธ ํ๋ก์ ํธ์ธ์ง๋ผ ๋จ์ํ tsconfig.json์ ๋ช๋ช ์ค์ ์ ์ถ๊ฐํด ์ฃผ๋ ๊ฒ์ผ๋ก ๋๋์ง ์์๋ค. { "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["src/*"] } ... } } ์๋!.. CRA๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ๊ฒฐํ ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ํด ์นํฉ ์ค์ ์ด ๋ค์ด์๋ ํ์ผ๋ค์ ์จ๊ฒจ๋๊ณ ์๋ค. ์ด ํ์ผ๋ค์ ์ปค์คํ ํ..
Today, What I learned? ํ์ ์คํฌ๋ฆฝํธ์ ๋ฆฌ๋์ค ํดํท์ผ๋ก ๋ฆฌํฉํ ๋ง ํ๋ ํฌ๋๋ฆฌ์คํธ๋ฅผ ๋ฆฌ์ฝ์ผ๋ก ํ๋ฒ ๋ !.. ๋ฆฌํฉํ ๋งํด๋ณด์๋ค. (์ตํ๋ณด๊ธฐ์ ํฌ๋๋ฆฌ์คํธ๋งํ ๊ฒ์ด ์๋ค..) ๋ฆฌ์ฝ์ผ์ ๋ํด ๊ฐ๋ตํ๊ฒ ์ ๋ฆฌํด๋ณด๊ณ ๋ฆฌํฉํ ๋ง ๊ณผ์ ์ ๊ธฐ๋กํ๋ค. Recoil ๋ฆฌ์ฝ์ผ์ facebook์์ ์ถ์ํ ๋ฆฌ์กํธ๋ฅผ ์ํ ์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค. ๋ง์ด๋ค ์ฌ์ฉํ๋ ๋ฆฌ๋์ค๋ณด๋ค ๋ณด์ผ๋ฌ ํ๋ ์ดํธ๊ฐ ์ ๊ณ , ์ก์ , ๋ฆฌ๋์, ๋์คํจ์น.. ์ ๊ฐ์ด ์์์ผ ํ ๊ธฐ๋ณธ ๊ฐ๋ ์ด ๋ง์ ๋ฆฌ๋์ค์ ๋นํด ์๋์ ์ผ๋ก ์ฝ๊ฒ ์ตํ ์ ์๋ค. ๋ ์ฌ์ฉ๋ฐฉ๋ฒ์ด useState ํ ์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋น์ทํ๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ ๋ฏํ๋ค. ๋ฆฌ๋์ค์์ ๋น๋๊ธฐ ์์ ์ ์ํด Redux-thunk๋ Redux-saga ๊ฐ์ ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ข ๋ ์ด..
Today, What I learned? Next.js์์ SSG์ ISR ๋ฐฉ์์ผ๋ก ํ์ด์ง๋ฅผ ์ด๋ป๊ฒ ์์ฑํ๊ณ ๋์ ์ผ๋ก ๋ผ์ฐํ ํ ์ ์์์ง ์ ๋ฆฌํด ๋ณธ๋ค. CSR๊ณผ SSR์ ๊ฐ๋ ์ ๊ทธ๋๋ ๋ค์ด๋ดค์ง๋ง, SSG์ ISR์ด๋ผ๋ ๊ฐ๋ ์ ์ฒ์ ์ ํ๋ค!.. ๋จผ์ SSG์ ISR์ ๋ํด ์ ๋ฆฝํด ๋์ด์ผ ํ์คํ ์ดํด๋ฅผ ํ ์ ์์ ๊ฒ ๊ฐ๋ค. SSG(Static Side Generation) SSG๋ ์ด๋ฆ ๊ทธ๋๋ก, ์ ์ ํ์ด์ง๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค. ๋น๋ํ๋ ์๊ฐ ์๋ฒ์์ ํ์ด์ง๋ฅผ ๋ ๋๋ง ํ๋ค. ํ์ด์ง ์์ฒญ์ด ๋ค์ด์์ ๋ ์ด๋ฏธ ๋ ๋๋ง ๋ ์ ์ ํ์ด์ง๋ฅผ ๋ฐํํ๋ค. ํ์ด์ง์ ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ๋ค์ด ๋ณํ์ง ์๋ ๊ฒฝ์ฐ์ ์ ์ฉํ๋ค. ๋ฐ๋๋ก, ํ์ด์ง๊ฐ ์ ๋ฐ์ดํธ๋๋ค๋ฉด ๊ทธ๋๋ง๋ค ๋ค์ ๋น๋๊ฐ ํ์ํ๋ค๋ ์ ์ด ์๋ค. getStaticProps()๋ฅผ ..
Today, What I learned? ๋ฆฌ์กํธ ํ๋ ์์ํฌ์ธ Next.js์ ๋ํ ๊ณต๋ถ๋ฅผ ์์ํ๋ค. Next.js๊ฐ ์ด๋ค ์ด์ ๋ก ๋์ ๋๊ฒ ๋์๋์ง์ ๋ฆฌ์กํธ ํ๋ก์ ํธ ๊ตฌ์กฐ์ ๋ค๋ฅธ ์ ๋ค์ ๋ํด ์ ๋ฆฌํด ๋ณธ๋ค. Next.js ๋ ์ด์ฉ๋ค๊ฐ ํ์ํ์๊น? Next.js๋ ๋ฆฌ์กํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์๋ฒ์ฌ์ด๋ ๋ ๋๋ง ํ๋ ์์ํฌ(SSR)๋ค. ๊ธฐ์กด ๋ฆฌ์กํธ๋ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง(CSR)์ธ๋ฐ, CSR์ SPA๋ฅผ ๋ฐํ์ผ๋ก ์๋ก๊ณ ์นจ ์์ด ์นํ์ด์ง๋ฅผ ์ด์ฉํ ์ ์๋ ์ ์ ์ ํธ์์ฑ์ด ๊ฐ์ ๋์์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค ์ฌ์ด์ฆ๊ฐ ์ปค์ ธ์ ์ด๊ธฐ ๋ก๋ฉ์๋๊ฐ ์ฆ๊ฐ๋์๋ค๋ ๋จ์ ์ด ์์๋ค. ์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ํ์ฌ ํ์ด์ง์์ ํ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ๋ง์ ๋ก๋ฉํ๋ ์ฝ๋๋ถํ (Code Split, Lazy-loading)์ ์ ์ฉํ๊ธฐ ์์ํ๋ค. ํ์ง๋ง!...
ํ๋ก์ ํธ๋ฅผ ๋ง์น๋ฉฐ ์ข์ ํ์๋ค ๋์ ์งํ ๊ธฐ๊ฐ ๋์ ๊ฝค ์ฆ๊ฒ๊ฒ ์์ ํ๋ ํ๋ก์ ํธ ๋ฐ์ด์ค๊ฐ ์ค๋ ๋ฐํ๋ฅผ ๋์ผ๋ก ๋ง๋ฌด๋ฆฌ๋์๋ค. ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ๋ฒ์ ์์์ ๋ง์กฑ์ค๋ฌ์ด ํ๋ฆฌํฐ์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ ๊ฒ ๊ฐ๋ค. ์ฐ๋ฆฌ ํ๋ก์ ํธ ๋ ํฌ์งํ ๋ฆฌ๋ ์ด์ชฝ! https://github.com/kimwonjuun/no-sunday GitHub - kimwonjuun/no-sunday: I really want to rest on sunday. I really want to rest on sunday. Contribute to kimwonjuun/no-sunday development by creating an account on GitHub. github.com ์ด๋ฒ ํ๋ก์ ํธ๋ ์ข์๋ ๋ถ๋ถ๊ณผ ํผ๋๋ฐฑ์ ๋ฐํ์ผ๋ก ๊ฐ์ธ์ ์ผ๋ก ์์ฌ์ ..
Today, What I learned? ์ด๋ฒ ํ๋ก์ ํธ์์ ๊ฒ์๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ณผ์ ์ ๊ธฐ๋กํ๋ค. ์์ฑํ ๊ธฐ๋ฅ์ ์ด๋ ๋ค. ์ด๋ฏธ์ง๊ฐ ๋๋ฌด ์์ง๋ง!.. ํ๊ธ, ์์ด ๋๋ฌธ์, ์๋ฌธ์๊ฐ ๋ชจ๋ ๊ฒ์์ด ๊ฐ๋ฅํ๋๋ก ๊ตฌํํ๋ค. ๊ฒ์๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์์์, ์ด๋ฒ ํ๋ก์ ํธ์ ๊ฒ์ ๊ธฐ๋ฅ์ ์์ํ๋ ํ๋ก์ ํธ์๋ ์กฐ๊ธ ๋ค๋ฅธ ์ฑ๊ฒฉ์ ๊ฒ์ ๊ธฐ๋ฅ์ ๊ตฌํํด ๋ณด๊ธฐ๋ก ํ๋ค. ์ฐ๋ฆฌ ํ๋ก์ ํธ๋ ์ ๋ 20๋ช ์ ๋์ ์ํฐ์คํธ ๋ชฉ๋ก์ ๊ฐ์ง๊ณ ์์๊ณ , (๋ฉฐ์น ์ฌ์ด ์กฐ๊ธ ๋ ๋์์) ์ด๋ค ๋จ์ด์ ์ผ์นํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์๋ด๊ธฐ ๋ณด๋ค๋, ํด๋น ์ํฐ์คํธ์ ์ ํ๋ธ ๋ชฉ๋ก ํ์ด์ง๋ก ๋ฐ๋ก ๋์ด๊ฐ๋ ๊ฒ ๋ ์ข์ง ์์๊น? ์ถ์ด์ ๊ทธ๋ ๊ฒ ํด๋ณด๊ธฐ๋ก!.. ๊ฒ์์ฐฝ ์ธ๋ถ ํด๋ฆญ ๊ฐ์ง ์ด๋ฒ์๋ ์์ด์ฝ์ ํด๋ฆญํ์ ๋ ๊ฒ์์ฐฝ์ด ๋์ค๋ UI๋ฅผ ๊ตฌํํด ๋ณด์๋ค. ํค๋ ์์ ๋ค๋ฅธ ์์ญ์ ํด๋ฆญํ..
Today, What I learned? ํ์ ๋ถ์ SOS๋ก!.. ๋ฆฌ๋์ค๋ก ๊ตฌํ๋์ด ์๋ API ๋ถ๋ฌ์ค๋ ๋ก์ง์ redux-toolkit๊ณผ redux-thunk๋ก ๋ฆฌํฉํ ๋ง ํ๋ ๊ณผ์ ์ ๊ฐ์ด ๊ณ ๋ฏผํ๊ฒ ๋์๋ค. ๊ณ ๋ฏผ์ ์๊ฐ์ด ๊ธธ์๋ ์ด์ ๋ ์ฐ๋ฆฌ ํ๋ก์ ํธ๋ ํ์ ์คํฌ๋ฆฝํธ๋ก ๊ตฌ์ฑ๋ ํ๋ก์ ํธ์๊ธฐ ๋๋ฌธ์ด๋ค!.. ํ์ ์คํฌ๋ฆฝํธ์์์ createAsyncThunk API๋ฅผ ๊ฐ์ ธ์ค๋ ๊ณผ์ ์์, ํ์ํ ์ ํ์ ๋งค๊ฐ๋ณ์๊ฐ 3๊ฐ๋ ๋์๊ธฐ ๋๋ฌธ์ ์ข ๋ ์ด๋ ค์ ๋ ๊ฒ ๊ฐ๋ค. ์๋๋ ์์ฑ๋ ๋ก์ง์ด๋ค. payload์ ํด๋นํ๋ ๋ถ๋ถ์ ๊ตฌ์กฐ๋ถํดํ ๋น์ผ๋ก ๊ฐ์ ธ์์ ์ฌ์ฉํ๊ณ ์๋ค. export const getSearchVideos = createAsyncThunk( 'getSearchVideos', async ({ channelId, ord..
Today, What I learned? ํ์ด์ด๋ฒ ์ด์ค๋ก ์์ ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ์ค ๊ตฌ๊ธ๊ณผ ๊นํ๋ธ๋ ์ฝ๊ฒ ๋์์ง๋ง, ์ ํ์ ์ ํ ๊ฐ๋ฐ์์ ๋ฑ๋ก์ด ๋์ด์์ด์ผ ํ๊ณ .. ์นด์นด์ค๋ ์นด์นด์ค ์ธ์ฆ ํ ํ์ด์ด๋ฒ ์ด์ค๋ก ๋ณด๋ด์ ํ์ด์ด๋ฒ ์ด์ค์ ํ ํฐ์ ๋ฐ์์ฌ ์ ์๋๋ก ํด์ผ ํ๊ณ .. (์๊ฐ์ด ์ข ๋ ์ฌ์ ๋ก์ธ ๋ ๋์ ํด๋ณด๊ณ ์ถ์) ํธ์ํฐ๋ฅผ ์ถ๊ฐํด ๋ณด์! ์ถ์ด์ ํธ์ํฐ๋ฅผ ์ถ๊ฐํ๋ ๊ณผ์ ์ ๊ธฐ๋กํด ๋ณธ๋ค. ํ์ด์ด๋ฒ ์ด์ค ์ธ์ฆ ๋ถ๋ถ์ ํธ์ํฐ ์ถ๊ฐ ๋จผ์ ํ์ด์ด๋ฒ ์ด์ค ๋ก๊ทธ์ธ ์ ๊ณต์ ์ฒด์์ ํธ์ํฐ๋ฅผ ์ฌ์ฉ์ค์ ์ผ๋ก ์ถ๊ฐํด ์ฃผ๊ธฐ. ์๋ ํ์ด์ด๋ฒ ์ด์ค ๊ณต์ ๋ฌธ์์ ๋ฐ๋ผ ํ๋ํ๋ ํด๊ฐ๋ฉด ๋๋๋ฐ, ์ผ๋จ ์ฌ์ฉํ ์น(ํน์ ์ฑ)์ ํธ์ํฐ ๊ฐ๋ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฑ๋กํด์ฃผ์ด์ผ ํ๋ค. https://firebase.google.com/docs/auth/web/twi..
Comment