๋ชจ๋ ๋ฆฌ์กํธ Deep Dive๋ก Next.js 13 ๋ณ๊ฒฝ์ฌํญ ๋ชจ๋ํ๊ฒ ์์๋ณด๊ธฐ
2023. 11. 24. 00:13
๐ฅ Front-End/React
๊ฐ์ Next.js 13 ๋ฒ์ app router ๋ฆด๋ฆฌ์ฆ ์ดํ ์ดํ ์ด์ page router๋ฅผ ์ผ์๋๋ณด๋ค ํธ์์ฌํญ๋ค์ด ๋ง์์ก๋ค. ๋ ์ด์ React Router๋ฅผ ์ฐ์ง ์์๋ ๋๊ณ , ๊ฐํธํ๊ฒ ๋ ์ด์์, ๋ก๋ฉ, ์๋ฌ ํ์ด์ง, 404 ํ์ด์ง ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค. ์ด์ธ์๋ ์๋ฒ ์ปดํฌ๋ํธ ๋ฑ์ฅ ์ดํ app ๋๋ ํ ๋ฆฌ ๋ด ํ์ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฒ ์ปดํฌ๋ํธ๋ก ๋์๋๋ค. ๋ฌผ๋ก ์ด๋๊น์ง๋ ํ๋ ์์ํฌ์ด๊ธฐ์ ์์ ๋๋ ์กฐ๊ธ ์ ํ๋์ง๋ง ํ๋ฒ ์จ๋ณด๋ฉด ๊ต์ฅํ ๋งค๋ ฅ์ ์ผ๋ก ๋ค๊ฐ์ฌ ๊ฒ์ด๋ค. ๋ณ๊ฒฝ์ฌํญ ๋ผ์ฐํ
๊ธฐ์กด page ๋ฐฉ์ ๋ผ์ฐํ
์ page ์ค์ฌ์ด์๋ค. ํ์ง๋ง app ๋ผ์ฐํ
์ ํ์ผ ์์คํ
๊ธฐ๋ฐ ๋ผ์ฐํ
์ด๋ค. Next.js 12 ์ดํ: /pages/a/b.tsx Ehsms /pages/a/b/index.tsx๋ ๋ชจ๋ ๋์ผํ ์ฃผ์๋ก ๋ณํ๋๋ค...
๋ชจ๋ ๋ฆฌ์กํธ Deep Dive ํ๊ธฐ
2023. 11. 22. 00:06
๐ฅ Front-End/React
๊ฐ์ ๋ฆฌ์กํธ ๊ด๋ จ๋ผ์ ์์นญ ํ๋ค ๋ณด๋ฉด ํ ๋ฒ์ฏค ๋ฐฉ๋ฌธํด ๋ดค์ ๋ฒํ ๋ธ๋ก๊ทธ๋ฅผ ์ด์ํ์๋ yceffort(๊น์ฉ์ฐฌ)๋๊ป์ ์ฑ
์ ๋ด์
จ๋ค. ๊ธ๋ค์ด ์ข์์ ์์ฃผ ๋ค๋ ์๋๋ฐ, ์ฑ
์ ๋ด์
จ๋ค๊ณ ํด์ ๊ตฌ๋งคํด ๋ดค๋ค. ์ฑ
์ ์ฝ๊ณ ๋๊ผ๋ ์ ์ React์ ์ ๋ง Deep Dive ํ ์ ์๋ค๋ ๊ฒ๊ณผ, ์น์ ํ ์ฌ์๋ฅผ ์์ ๋ ๋๋์ด์๋ค. ๋์ ๋
์ ์ฌ๋์ ๋ฐ๋ผ ํธ์ฐจ๊ฐ ์๊ฒ ์ง๋ง, ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฆฌ์กํธ๋ฅผ ์ด๋ ์ ๋ ๋ค๋ฃจ์ง ๋ชปํ๋ค๋ฉด ์ฑ
๋ด์ฉ์ด ๋ค์ ๋ํดํ ์ ์๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์ ์ฝ์ดํ ๋ด์ฉ๋ค์ ์ดํดํ๊ณ ์์ด์ผ ํ๊ณ , ๋ฆฌ์กํธ๋ ๋ค๋ค๋ดค์ด์ผ ์ดํด๊ฐ ๊ฐ๋ ๋ถ๋ถ๋ค์ด ๋ง๋ค. ์ฑ
๋์ด๋๋ ์
๋ฌธ์๋ณด๋ค๋ ๋ฆฌ์กํธ ๋ด์ง๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ์ค๊ธ์ ์ ๋๋ก ์๊ฐ๋๋ค. ํ๊ธฐ ์ผ๋จ ๋ชฉ์ฐจ ๊ตฌ์ฑ๋ถํฐ ๊ต์ฅํ ์ธ์ฌํ๋ค. ๋ฆฌ์กํธ์ ์ฝ์ดํ๊ฒ ์์ฉ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ..
[Web] ๋ชจ๋
ธ๋ ํฌ(Mono Repo)
2022. 12. 6. 18:13
๐ฅ Front-End/Web
๋ฑ์ฅ ๋ฐฐ๊ฒฝ ๋ฉ์ด๋ฆฌ์ฑ ๋ง๋ค๋ ๊ณผ๊ฑฐ ์ฝ๋์๋ ๋ฌ๋ฆฌ ์ต์ ์ฝ๋๋ค์ ์ ๋ถ ๋ชจ๋ํ๊ฐ ๋์ด์๋ค. ๋ชจ๋ํ์ ์ด์ ์ผ๋ก๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ง๋ง ์ญ์ ์ ์ง๋ณด์์, ์ฌ์ฌ์ฉ์ฑ์ด ๊ฐ์ฅ ํฐ ์ด์ ์ด๋ค. ์ฝ๋๋ฅผ ํฐ ๋ฉ์ด๋ฆฌ์ฑ ๋ง๋ค์ด ๊ตด๋ฆฐ๋ค๋ฉด ํ ๋ถ๋ถ์ ์ ์ง ๋ณด์ํ๊ธฐ ์ํด ์ฝ๋ ์ ์ฒด๋ฅผ ์์ ํด์ผ ํ๊ณ , ์์กด์ฑ ํ์
๋ํ ๋ณต์กํด์ง๋ค. ๋ํ ์ผ๋ ์ฝ๋๋ฅผ ๋ค๋ฅธ ๊ณณ์ ์ฌํ์ฉํ๊ธฐ ์ด๋ ค์์ง๋ค. ์ฌ์ง์ถ์ฒ: https://d2.naver.com/helloworld/0923884 ๋ฉํฐ๋ ํฌ(multi repo) === ํด๋ฆฌ๋ ํฌ(poly repo) ๋ฉํฐ๋ ํฌ๋ ๋ง ๊ทธ๋๋ก ์ฌ๋ฌ ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ๋ง๋ค์ด ํ๋ก์ ํธ๋ฅผ ์ด์ํ๋ ๋ฐฉ์์ด๋ค. ๊ฐ์ ๋
์์ ์ธ ๋ ํฌ์งํ ๋ฆฌ๋ก ๊ตฌ์ฑ๋์ด ์๊ธฐ์ ๊ฐ ํ๋ณ ์์จ์ฑ์ด ๋ณด์ฅ๋๊ณ ๋น ๋ฅธ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ ์ฅ์ ์ด ์์ง๋ง, ๋ฌธ์ ์ ๋ค๋ ๊ฐ์ง๊ณ ์๋ค. ๋ํ์ ..
[TroubleShooting] onKeyDown, onKeyPress ์ด๋ฒคํธ ๋ฌธ์
2022. 12. 6. 16:22
๐ฅ Front-End/TroubleShooting
onKeyDown ์ด๋ฒคํธ ํ๊ธ ์๋ฌ ์ฑํ
๊ธฐ๋ฅ์ ๊ตฌํํ๋ ์ค, ์ฑํ
์ ๋ณด๋ด๋ฉด ์ฑํ
์ ๋ ์์ ์ด ํ๋ฒ ๋ ์ ์ก๋ผ ์ฑํ
์ด ๋ ๋ฒ์ฉ ์ ์ก๋๋ ์๋ฌ๋ฅผ ๋ฐ๊ฒฌํ๋ค. ์์ด์ ์ซ์, ํน์๊ธฐํธ ๋ฑ์ ๋ณด๋ด๋ฉด ์ ์์ ์ผ๋ก ์ ์ก๋์ง๋ง, ์ ๋
ํ๊ธ๋ง ์ ์กํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ๊ตฌ๊ธ๋ง์ ํด๋ณด๋, onKeyDown ๋ฌธ์ ์๋ค. onKeyPress๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋จํ ํด๊ฒฐ๋๋ค๋๋ฐ, onKeyPress๋ ์ด๋ฏธ deprecated๋ ์ํ๋ผ ์ฐ๊ธฐ๊ฐ ์ซ์๋ค. ์ข ๋ ๊ตฌ๊ธ๋ง์ ํด๋ณด๋ ํด๊ฒฐ์ฑ
์ ์ฐพ์๋ค. ์์ด, ์ซ์, ํน์๊ธฐํธ๋ ๊ธ์ ์กฐํฉ์ด ์ ๋๋ ๋ฐ๋ฉด ํ๊ธ์ ์กฐํฉ ๋ฌธ์์ด๊ธฐ์ ๋ฐ์๋๋ ๋ฌธ์ ์๋ค. ์ธํ ์ฐฝ์ ํ๊ธ๋ก onChange๊ฐ ์งํ๋๊ณ ์์๋, ๊ธ์๊ฐ ์กฐํฉ ์ค์ธ์ง ์กฐํฉ์ด ๋๋ ์ํ์ธ์ง ์ปดํจํฐ๊ฐ ํ์
์ด ์๋ผ ์ด๋ฒคํธ๊ฐ ๋ ๋ฒ์ฉ ํธ์ถ๋๊ณ ์์๋ค. m..
[React] Props, State, ๋ฆฌ๋ ๋๋ง ๋ฐ์ ์กฐ๊ฑด
2022. 8. 1. 02:34
๐ฅ Front-End/React
Props Props๋ Properties์ ์ค์๋ง๋ก, ๋ฆฌ์กํธ์์๋ ์์ฑ์ ๋ํ๋ด๋ ๋ฐ์ดํฐ๋ก ์ฌ์ฉ๋ฉ๋๋ค. props๋ ์์ ์ปดํฌ๋ํธ์์ ํ์ ์ปดํฌ๋ํธ์ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ฐ์ต๋๋ค. props๋ ํ์ ์ปดํฌ๋ํธ์์ ๊ฐ์ ์ง์ ์ ์ผ๋ก ์์ ํ ์ ์์ต๋๋ค. ์ฆ, props๋ ๐ ์ปดํฌ๋ํธ๊ฐ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ๋ฐ์์จ ๋ฐ์ดํฐ์
๋๋ค. State State๋ ์ผ๋ฐ์ ์ผ๋ก ์ปดํฌ๋ํธ์ ๋ด๋ถ์์ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํด์ผํ ๋์ ์ฌ์ฉ๋ฉ๋๋ค. ์ปดํฌ๋ํธ์์ ๋์ ์ธ ๊ฐ์ ์ํ(state)๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ๋์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ํ๋กํผํฐ(props)์ ํน์ง์ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ๊ฐ์ ๋ฐ๊ฟ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ํ์ง๋ง ๊ฐ์ ๋ฐ๊ฟ์ผ ํ๋ ๊ฒฝ์ฐ๋ ๋ถ๋ช
์กด์ฌํ๋ฉฐ, ์ด๋ด๋ state๋ผ๋ ๊ฒ์ ์ฌ์ฉํฉ๋๋ค. ๊ฐ์ ์ ์ฅํ๊ฑฐ๋ ..
[JS] ES6
2022. 7. 24. 23:52
๐ฅ Front-End/JavaScript
ES(ECMA Script) ECMAScript(ES5๋ ES2015์ ES๋ ECMAScript์ ์ค์๋ง์ด๋ค.)๋ Ecma ์ธํฐ๋ด์
๋์์ ์ ์ํ ECMA-262 ๊ธฐ์ ๊ท๊ฒฉ์ ์ ์๋ ํ์ค ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์
๋๋ค. ๊ฐ๋จํ ๋งํ์๋ฉด ํ์คํ๋ ์คํฌ๋ฆฝํธ ์ธ์ด์
๋๋ค. ๋์ค์ ์ผ๋ก ์ ๋ช
ํ ES6์ ๊ฒฝ์ฐ ES5 ์ดํ ๋ช
์ธ์์ ๋ฌธ์ ๊ฐ ๋์๋ ๋ถ๋ถ๋ค์ด ํด๊ฒฐ๋์๊ณ , ๊ธฐ์กด ์ฝ๋๋ฅผ ๋ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์๋ ์๋ก์ด ๋ฌธ๋ฒ์ด ์ถ๊ฐ๋๋ฉด์ ๋ ๊ฐ๋
์ฑ ๋ฐ ์ ์ง ๋ณด์์ฑ์ด ํฅ์๋์์ต๋๋ค. ๊ทธ ๋์ ์น์์ ์ฌ์ฉํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ ๋ช
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค(lodash, React, Vue ๋ฑ)์ ๊ฐ๋ฐ ํ๊ฒฝ๋ ES6๋ก ๋ฐ๋์์ต๋๋ค. ๋ฐ๋ผ์ ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๋ ES6๋ฅผ ์ฌ์ฉํ ๋ ํจ์ฌ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ES6์์ ์๋ก ์ถ..
[JS] TDZ
2022. 7. 21. 02:08
๐ฅ Front-End/JavaScript
TDZ(Temporal Dead Zone)๋ ๋ฌด์์ธ๊ฐ? const ๋ณ์๋ฅผ ์ ์ธํ๊ณ ์ด๊ธฐํํ๋ฉด ๋ณ์์ ์ ๊ทผํ ์ ์์ต๋๋ค. ์์ํ๋๋ก ๋์ํฉ๋๋ค. const white = '#FFFFFF'; white; // => '#FFFFFF' ์ด๋ฒ์๋ ์ ์ธ ์ ์ white ๋ณ์์ ์ ๊ทผํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. white; // throws `ReferenceError` const white = '#FFFFFF'; white const white = '#FFFFFF' ๊ตฌ๋ฌธ ์ ์ค๊น์ง, white ๋ณ์๋ TDZ์ ์์ต๋๋ค. TDZ์ ์๋ white ๋ณ์์ ์ ๊ทผํ๊ฒ ๋๋ฉด , ReferenceError: Cannot access 'white' before initialization ์๋ฐ์คํฌ๋ฆฝํธ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. TDZ์ ์ํฅ์..
[JS] ์คํ ์ปจํ
์คํธ, ํธ์ด์คํ
, ํจ์ ์ ์ธ๋ฌธ๊ณผ ํจ์ ํํ์
2022. 7. 21. 01:40
๐ฅ Front-End/JavaScript
์คํ ์ปจํ
์คํธ(Execution Context) ์คํ ์ปจํ
์คํธ๋ ์คํํ ์ฝ๋์ ์ ๊ณตํ ํ๊ฒฝ ์ ๋ณด๋ค์ ๋ชจ์๋์ ๊ฐ์ฒด์
๋๋ค. ๋์ผํ ํ๊ฒฝ์ ์๋ ์ฝ๋๋ค์ ์คํํ ๋ ํ์ํ ํ๊ฒฝ ์ ๋ณด๋ค์ ๋ชจ์ ์ปจํ
์คํธ๋ฅผ ๊ตฌ์ฑํ๊ณ ์ด๋ฅผ ์ฝ์คํ์ ์์ ์ฌ๋ฆฝ๋๋ค. ์คํ ์ปจํ
์คํธ๋ ์ ์ญ๊ณต๊ฐ์ด ์์ฑ๋ ๋, ํจ์๊ฐ ํธ์ถ๋ ๋ ์์ฑ๋ฉ๋๋ค. ์คํ ์ปจํ
์คํธ์ ์ฝ ์คํ ์์ ์ฝ๋ ์คํ์, ์ ์ญ๊ณต๊ฐ์ด ํ์ฑํ๋๋ฉด์ ์ ์ญ ์ปจํ
์คํธ๊ฐ ์์ฑ๋๊ณ ํจ์ ํธ์ถ ์์๋๋ก ์ฝ์คํ์ ์คํ ์ปจํ
์คํธ๊ฐ ์์ด๋๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์คํ ์ปจํ
์คํธ๊ฐ ๋ด๊ณ ์๋ ์ ๋ณด Variable Environment environmentRecord (snapshot) : ํ์ฌ ์ปจํ
์คํธ ๋ด์ ์๋ณ์๋ค์ ๋ํ ์ ๋ณด outerEnvironmentReference (snapshot) :..