Hoonni
ํ›„๋‹ˆ's Blog

์ „์ฒด ๊ธ€

Hi There ! ๐Ÿ–๏ธ I am FrontEnd Developer ๐Ÿ’ป I'm studying AI, Backend, React-Native Now.
React/2022-ไธŠ

์›์‹œ ์ž๋ฃŒํ˜• vs ์ฐธ์กฐ ์ž๋ฃŒํ˜•

์›์‹œ ์ž๋ฃŒํ˜• vs ์ฐธ์กฐ ์ž๋ฃŒํ˜• ์›์‹œ ์ž๋ฃŒํ˜• ๊ณ ์ •๋œ ์ €์žฅ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ์›์‹œ ํƒ€์ž…(primitive type) ๋ฐ์ดํ„ฐ ๋ผ๊ณ  ํ•œ๋‹ค. ์›์‹œ ํƒ€์ž… ๋ฐ์ดํ„ฐ : ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ฉด์„œ method๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๋Š” 6๊ฐ€์ง€์˜ ํƒ€์ž… โ”Œ string โ”œ number โ”œ bigint โ”œ boolean โ”œ undefined โ”œ symbol โ”” null ์›์‹œ ์ž๋ฃŒํ˜•์€ ๋ชจ๋‘ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋งŒ์„ ๋‹ด๊ณ  ์žˆ๋‹ค. ์˜ˆ์‹œ โ”Œ ์œ„ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด, ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์™€๋Š” ๊ด€๊ณ„ ์—†์ด ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜์—๋Š” ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋งŒ์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค. โ”” ์›์‹œ ์ž๋ฃŒํ˜•์€ ๊ฐ’ ์ž์ฒด์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅ(immutable)ํ•˜์ง€๋งŒ, ๋ณ€์ˆ˜์— ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜๋Š” ์žˆ๋‹ค. ์ฐธ์กฐ ์ž๋ฃŒํ˜• ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์›์‹œ ์ž๋ฃŒํ˜•์ด ์•„๋‹Œ ๋ชจ๋“  ๊ฒƒ๋“ค์€ ์ฐธ์กฐ ์ž๋ฃŒํ˜•์ด๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” ๋ฐฐ์—ด๊ณผ ๊ฐ..

Web Basic/JavaScript

Null & undefined

Null & undefined ๊ณตํ†ต์  ๋‘˜๋‹ค ๊ฐ๊ฐ์˜ ํƒ€์ž…๋ช…(undefined, null)์˜ ๊ฐ’์ด ์œ ์ผํ•˜๋‹ค. undefined ํƒ€์ž…์˜ ๊ฐ’์€ undefined๊ฐ€ ์œ ์ผํ•˜๋‹ค. null ํƒ€์ž…์˜ ๊ฐ’์€ null์ด ์œ ์ผํ•˜๋‹ค. undefined ํƒ€์ž… undefined๋Š” ์›์‹œ ์ž๋ฃŒํ˜• undefined๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค. undefined๋Š” "์•„๋ฌด ๊ฐ’๋„ ํ• ๋‹น๋ฐ›์ง€ ์•Š์€ ์ƒํƒœ"๋ฅผ ์˜๋ฏธํ•œ๋‹ค. var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์•”๋ฌต์ ์œผ๋กœ undefined๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค. ๋ณ€์ˆ˜ ์„ ์–ธ์— ์˜ํ•ด ํ™•๋ณด๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฒ˜์Œ ํ• ๋‹น์ด ์ด๋ค„์งˆ ๋•Œ๊นŒ์ง€ ๋นˆ ์ƒํƒœ(๋Œ€๋ถ€๋ถ„ ๋น„์–ด ์žˆ์ง€ ์•Š๊ณ  ์“ฐ๋ ˆ๊ธฐ ๊ฐ’์ด ๋“ค์–ด ์žˆ๋‹ค.)๋กœ ๋‚ด๋ฒ„๋ ค๋‘์ง€ ์•Š๊ณ  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด undefined๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ ์ดํ›„ ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋ฉด undefined๊ฐ€..

Web Basic/JavaScript

Js์™€ Node์˜ ์ฐจ์ด

Js์™€ Node์˜ ์ฐจ์ด JavaScript : ๋ธŒ๋ผ์šฐ์ €, ๋ฌธ์„œ ๋“ฑ์„ ๋‹ค๋ฃจ๋Š” ์ฆ‰, clinet์— ๋Œ€ํ•œ ๊ฐœ๋ฐœ์„ ํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค. Nodejs : backend์—์„œ server์— ๋Œ€ํ•œ ๊ฐœ๋ฐœ์„ ํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค. ์ฐจ์ด์  Nodejs๋Š” chrome์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ธ v8์„ ์ด์šฉํ•œ๋‹ค. JavaScript๋Š” ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ์จ ํŠน์ •ํ•œ ํ™˜๊ฒฝ(๋ธŒ๋ผ์šฐ์ €)์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ๋ฐ Nodejs๋ฅผ ํ†ตํ•˜์—ฌ ํŠน์ •ํ•œ ํ™˜๊ฒฝ(๋ธŒ๋ผ์šฐ์ €) ์—†์ด๋„ ์‹คํ–‰์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. JavaScript๋ฅผ ํฌ๋กฌ(chrome)๊ฐ™์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ์“ฐ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋ธŒ๋ผ์šฐ์ € ๋ฐ–. ์ฆ‰, ๋‚ด ์ปดํ“จํ„ฐ์—์„œ ๋‹ค์–‘ํ•œ ์šฉ๋„๋กœ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด ๋ฐ”๋กœ Node.js์ด๋‹ค. Nodejs๋ฅผ ์ด์šฉํ•˜์—ฌ Express ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ๋„ ..

Web Basic/JavaScript

let, const, var

let, const, var JavaScript์—์„œ ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹์—๋Š” let, const, var๊ฐ€ ์žˆ๋‹ค. ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹ var๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹์— ์žˆ์–ด์„œ ํฐ ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋ณ€์ˆ˜๋ฅผ ํ•œ ๋ฒˆ ๋” ์„ ์–ธํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์—๋Ÿฌ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๊ณ  ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๊ฐ’์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์œ ์—ฐํ•œ ๋ณ€์ˆ˜ ์„ ์–ธ์œผ๋กœ ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ์—๋Š” ํŽธ๋ฆฌ ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ์ฝ”๋“œ๋Ÿ‰์ด ๋งŽ์•„์ง„๋‹ค๋ฉด ์–ด๋””์—์„œ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ ๋ ์ง€๋„ ํŒŒ์•…ํ•˜๊ธฐ ํž˜๋“ค๋ฟ๋งŒ์•„๋‹ˆ๋ผ ๊ฐ’์ด ๋ฐ”๋€” ์šฐ๋ ค๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ES6 ์ดํ›„, ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ๋œ ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹์ด let๊ณผ const์ด๋‹ค. ์œ„์˜ ์ฝ”๋“œ์—์„œ ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹์„ ๋ฐ”๊ฟ”์ฃผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. โ”Œ name์ด ์ด๋ฏธ ์„ ์–ธ ๋˜์—ˆ๋‹ค๋Š” ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. (const๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.) โ”œ ๋ณ€์ˆ˜ ์žฌ์„ ์–ธ์ด ..

React/2022-ไธŠ

Reduce

Reduce Reduce ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์ฃผ์–ด์ง„ ๋ฆฌ๋“€์„œ(reducer) ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋ฆฌ๋“€์„œ ํ•จ์ˆ˜๋Š” ๋„ค ๊ฐœ์˜ ์ธ์ž๋ฅผ ๊ฐ€์ง„๋‹ค. โ‘  ๋ˆ„์‚ฐ๊ธฐ accumulator (acc) โ‘ก ํ˜„์žฌ ๊ฐ’ (cur) โ‘ข ํ˜„์žฌ ์ธ๋ฑ์Šค (idx) โ‘ฃ ์›๋ณธ ๋ฐฐ์—ด (src) reduce๋ผ๋Š” ์ด๋ฆ„์€ ์ด ๋ฉ”์„œ๋“œ๊ฐ€ ๋ณดํ†ต ๋ฐฐ์—ด์„ ๊ฐ’ ํ•˜๋‚˜๋กœ ์ค„์ด๋Š” ๋ฐ ์“ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ถ™์˜€๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฐ์—ด์— ๋“ค์–ด์žˆ๋Š” ์ˆซ์ž๋ฅผ ๋”ํ•˜๊ฑฐ๋‚˜ ํ‰๊ท ์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์€ ๋ฐฐ์—ด์„ ๊ฐ’ ํ•˜๋‚˜๋กœ ์ค„์ด๋Š” ๋™์ž‘์ด๋‹ค. ํ•˜์ง€๋งŒ, reduce๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’ ํ•˜๋‚˜๋Š” ๊ฐ์ฒด์ผ ์ˆ˜๋„ ์žˆ๊ณ , ๋‹ค๋ฅธ ๋ฐฐ์—ด์ผ ์ˆ˜๋„ ์žˆ๋‹ค. โ”Œ callback : ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์‹คํ–‰ํ•  ํ•จ์ˆ˜, ๋‹ค์Œ ๋„ค๊ฐ€์ง€ ์ธ์ˆ˜๋ฅผ ๋ฐ›๋Š”๋‹ค. โ”œ โ”Œ accumulator(๋ˆ„์‚ฐ๊ธฐ) : ์ฝœ๋ฐฑ์˜ ๋ฐ˜ํ™˜๊ฐ’์„ ๋ˆ„์ ํ•œ..

React/2022-ไธŠ

Memoization

Memoization ๊ธฐ์กด์— ์ˆ˜ํ–‰ํ•œ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ์ €์žฅํ•ด๋‘๊ณ  ๋™์ผํ•œ ์ž…๋ ฅ์ด ๋“ค์–ด์˜ค๋ฉด ์žฌํ™œ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. Memoized๋œ ๋‚ด์šฉ์„ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ๋ Œ๋”ํ•  ์‹œ, ๊ฐ€์ƒ DOM์—์„œ ๋ฐ”๋€ ๋ถ€๋ถ„์„ ํ™•์ธํ•˜์ง€ ์•Š์•„ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋œ๋‹ค. Memoization ๋ฐฉ๋ฒ• 1๏ธโƒฃ Redux - useSelector useSelector๋กœ Redux๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ• โ‘  useSelector๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฌ์šฉ store์—์„œ ๊ฐ์ฒด๋ฅผ ํ†ต์งธ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋Œ€์‹ , ํ•„์š”ํ•œ ๊ฐ’๋“ค์„ ์ชผ๊ฐœ์–ด์„œ useSelector๋กœ ์„ ์–ธํ•ด์ค€๋‹ค. โ”” number ๋˜๋Š” diff๊ฐ€ ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ๋งŒ ๋ฆฌ๋ Œ๋”๋ง ๋œ๋‹ค. โ‘ก shallowEqual ์‚ฌ์šฉ shallowEqual์€ react-redux์— ๋‚ด์žฅ๋˜์–ด์žˆ๋Š” ํ•จ์ˆ˜๋กœ, ๊ฐ์ฒด ์•ˆ์˜ ๊ฐ€์žฅ ๊ฒ‰์— ์žˆ๋Š” ๊ฐ’๋“ค์„ ๋น„๊ตํ•ด์ค€๋‹ค. โ‘ข equality ..

React/2022-ไธŠ

Optimistic UI

Optimistic UI Optimistic UI(๋‚™๊ด€์ ์ธ UI ?)๋Š” ํŠน์ • ์š”์ฒญ์ด ์„ฑ๊ณต ํ•  ๊ฒƒ์ด๋ผ ๊ฐ€์ •์„ ํ•˜๊ณ  ๋จผ์ € ๊ทธ ์š”์ฒญ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ์‹์˜ UI์ด๋‹ค. ์–ด๋–ค ์š”์ฒญ์ด ์•„์ฃผ ๋†’์€ ํ™•๋ฅ ๋กœ ์„ฑ๊ณตํ•œ๋‹ค๋Š” ๋ณด์žฅ์ด ์žˆ์„ ๋•Œ, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์š”์ฒญ์ด ๋„ˆ๋ฌด ๋Šฆ์ง€ ์•Š์€ ์‹œ๊ฐ„ ์•ˆ์— ์‘๋‹ต์ด ์˜จ๋‹ค๋Š” ๋ณด์žฅ์ด ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” UI๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. Optimistic UI - ์„ธ UI์˜ ์ด์•ผ๊ธฐ ์„ธ UI๋Š” ์ˆ ์ง‘์— ๊ฐ„๋‹ค. ์ฒซ UI๋Š” ์ˆ ์„ ํ•œ ์ž” ์ฃผ๋ฌธํ•˜๊ณ , ๊ทธ ํ›„๋กœ๋„ ๋ช‡ ๋ฒˆ ๋” ์ฃผ๋ฌธํ•œ๋‹ค. ๋ช‡ ์‹œ๊ฐ„ ํ›„, ๊ทธ๋Š” ๊ณ„์‚ฐ์„ ํ•˜๊ณ  ์ทจํ•ด์„œ ์ˆ ์ง‘์„ ๋‚˜์„ ๋‹ค. ๋˜๋‹ค๋ฅธ UI๋Š” ํ•œ ์ž”์„ ์‹œํ‚ค๋ฉด์„œ ๊ณ„์‚ฐ์„ ๋จผ์ €ํ•˜๊ณ , ์ดํ›„๋กœ๋„ ๋จผ์ € ๊ณ„์‚ฐํ•˜๊ณ  ๋งˆ์‹œ๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•˜๋‹ค ์ทจํ•ด์„œ ์ˆ ์ง‘์„ ๋‚˜๊ฐ„๋‹ค. ๋งˆ์ง€๋ง‰ UI๋Š” ์ˆ ์ง‘์— ๋“ค์–ด์„œ์ž๋งˆ์ž ์ทจํ•ด์„œ ๋ฐ”๋กœ ๋‹ค์‹œ ๋‚˜์˜จ๋‹ค. - ๊ทธ..

React/2022-ไธŠ

LazyLoad vs Preload

LazyLoad vs Preaload Preload ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋ฉด, ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค ์ž์›์„ ์„œ๋ฒ„์— ์š”์ฒญํ•  ๋•Œ ์—ฌ๋Ÿฌ ์ž์›์„ ๋™์‹œ์— ์š”์ฒญํ•˜๊ฒŒ ๋˜๊ณ  ์„œ๋ฒ„์—์„œ๋Š” ์š”์ฒญ ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ์ค€๋น„๊ฐ€ ๋˜๋Š”๋Œ€๋กœ ์‘๋‹ต์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ๋•Œ, ํŠน์ • ๋ฆฌ์†Œ์Šค๋ฅผ ๋น ๋ฅด๊ฒŒ ๋กœ๋”ฉํ•˜๋„๋ก ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋ฐ”๋กœ PreLoad๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. Head ํƒœ๊ทธ์— ๋น ๋ฅด๊ฒŒ ๋กœ๋”ฉ์‹œํ‚ฌ ํŒŒ์ผ์„ PreLoad๋กœ ์ง€์ •ํ•˜๊ฒŒ ๋˜๋ฉด, ํŽ˜์ด์ง€ ์š”์ฒญ ์‹œ ํ•ด๋‹น ์†Œ์Šค ์ž์›์„ ์šฐ์„ ์ ์œผ๋กœ ๋กœ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. โ”” "์ด๋ฏธ์ง€ ๋ณด์—ฌ์ฃผ๊ธฐ" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์ง€๋„ ์•Š์•˜๋Š”๋ฐ ์ด๋ฏธ์ง€๊ฐ€ ์šฐ์„ ์ ์œผ๋กœ ์š”์ฒญ์ด ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. Preload๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ๋ถˆํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค์— Preload๋Š” ๊ฑธ์ง€ ์•Š๊ธฐ ์šฐ์„  preload๋กœ ์„ ์–ธ๋˜๋Š” ์ˆœ๊ฐ„, ํ•ด๋‹น ์†Œ์Šค๊ฐ€ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋“ ..