๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€

(47)
React #2. JSX ์†Œ๊ฐœ ์•„๋ž˜ ๋ณ€์ˆ˜ ์„ ์–ธ์„ ์ฐธ์กฐํ•ด๋ณด์ž. const element = Hello, world!; ์ด ํƒœ๊ทธ ๊ตฌ๋ฌธ์€ ๋ฌธ์ž์—ด์ด๋‚˜ HTML์ด ์•„๋‹ˆ๋‹ค. JSX๋ผ๊ณ  ๋ถ€๋ฅด๋Š” JavaScript์˜ ํ™•์žฅ ๊ตฌ๋ฌธ์ด๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด์„œ JavaScript์™€ HTML์„ ํ•ฉ์ณ๋†“์€ ๋ฌธ๋ฒ•์ด๋‹ค. JSX๋Š” React์˜ ์š”์†Œ(Element) ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. (createElement) ๊ฒฝ๊ณ : JSX๋Š” HTML๋ณด๋‹ค JavaScript์— ๋” ๊ฐ€๊น๊ธฐ ๋•Œ๋ฌธ์— React DOM์€ camelCaseHTML ์†์„ฑ ์ด๋ฆ„ ๋Œ€์‹  ์†์„ฑ ์ด๋ฆ„ ์ง€์ • ๊ทœ์น™์„ ์‚ฌ์šฉํ•œ๋‹ค. (ex) class --> className, tabindex --> tabIndex. JSX์˜ ์ค‘๊ด„ํ˜ธ ์•ˆ์— JavaScript ํ‘œํ˜„์‹์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜์˜ ์˜ˆ์—์„œ๋Š”, ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜ ํ˜ธ์ถœ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ค‘๊ด„ํ˜ธ..
React #1. ๋ฆฌ์•กํŠธ๋ž€ ๋ฌด์—‡์ธ๊ฐ€ React๋Š” Facebook์ด ๋งŒ๋“  ํ˜„์žฌ ๊ฐ€์žฅ ํ•ซํ•œ ํ”„๋ก ํŠธ์—”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ๋งˆ์น˜ 2006๋…„, ์ฒ˜์Œ์œผ๋กœ jQuery๊ฐ€ ๋‚˜์™”์„ ๋•Œ์˜ ์ธ๊ธฐ๊ฐ€ ์ด ์ •๋„์˜€์„๊นŒ? ๊ฐœ๋ฐœ์ž๋“ค์€ ์™œ React์— ์ด๋ ‡๊ฒŒ ์—ด๊ด‘ํ• ๊นŒ? ํฌ์ŠคํŒ…์— ์•ž์„œ React๊ฐ€ ์ •ํ™•ํžˆ ๋ฌด์—‡์ธ์ง€, ์™œ ํ•„์š”ํ•œ์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ์‚ฌ์‹ค ๋‹จ์ˆœํ•œ ์ •์  ์›น ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณ„๋„์˜ ํ”„๋ก ํŠธ์—”๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค. HTML, CSS๋งŒ์œผ๋กœ๋„ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์— JavaScript๋ฅผ ๋”ํ•˜๋ฉด ์‚ฌ์šฉ์ž์˜ ํ–‰๋™ ํ๋ฆ„์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ์›น ์‚ฌ์ดํŠธ๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์š”์ฆ˜์˜ Web์€ ๋‹จ์ˆœํžˆ ์ปจํ…์ธ ๋ฅผ ๋…ธ์ถœํ•ด์ฃผ๋Š” ์›น ํŽ˜์ด์ง€๊ฐ€ ์•„๋‹Œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค. ๋ธŒ๋ผ์šฐ์ € ์ƒ์œผ๋กœ๋„ JavaScript๋ฅผ ํ†ตํ•ด ์ž์—ฐ์Šค๋Ÿฌ์šด ํ๋ฆ„์„ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ UI๋ฅผ ๋™์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ด..
React ๊ณต๋ถ€ ์‹œ ์ฐธ๊ณ ํ•ด์•ผ ํ•  5๊ฐ€์ง€ SPA๊ฐ€ ์ƒ๊ฒจ๋‚˜๋ฉด์„œ React.js, Angular, Vue๊ฐ€ ํฐ ์ฃผ๋ชฉ์„ ๋ฐ›๊ณ  ์žˆ๋‹ค. ๊ทธ ์ค‘์—์„œ๋„ Facebook์ด ์ œ๊ณตํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ React๋Š” ํ˜„์—…์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๊ณ  ์žˆ๊ณ , ๊ธฐ์กด์˜ JavaScript ๊ฐœ๋ฐœ์ž๋“ค์˜ ํฐ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ์— ๊ธฐ์—ฌํ•˜๊ณ  ์žˆ๋‹ค. SPA (Single Page Application) ์ฐจ์„ธ๋Œ€ ํŒจ๋Ÿฌ๋‹ค์ž„. ๋‹จ์ผ ํŽ˜์ด์ง€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ธŒ๋ผ์šฐ์ €์— ๋กœ๋“œ๋˜๊ณ  ๋‚œ ๋’ค์— ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๋Š”๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ตœ์ดˆ ํ•œ๋ฒˆ ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋กœ๋”ฉํ•œ ํ›„ ์ดํ›„๋ถ€ํ„ด ๋ฐ์ดํ„ฐ๋งŒ ๋ณ€๊ฒฝํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ -> Angular, Vue, React๊ฐ€ ์ƒ๊ฒจ๋‚œ ๋ฐฐ๊ฒฝ ํ•„์ž ๋˜ํ•œ React๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋œ ์ง€ ๊ทธ๋ฆฌ ๊ธธ์ง€ ์•Š์•„ ๋Šฅ์ˆ™ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, ํ•™์Šต ๊ณผ์ •์—์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•๋“ค์„ ๊ฑฐ์ณ๋ณด๋ฉด์„œ ์ด๋ ‡๊ฒŒ ๊ณต๋ถ€..
2020๋…„์˜ ์›น ๊ธฐ์ˆ  ๊ฐœ๋ฐœ ์Šคํƒ ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์•ฑ์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ๊ธฐ์ˆ  ์Šคํƒ์ด๋‹ค. ์ ์ ˆํ•œ ๊ธฐ์ˆ  ์Šคํƒ์„ ํ†ตํ•ด ์ ์€ ์˜ˆ์‚ฐ์œผ๋กœ ๊ฐ€์žฅ ํฐ ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ์—… ์ž…์žฅ์—์„œ๋Š” ํŠนํžˆ ์–ด๋ ค์šด ๊ณผ์ œ์ด๋ฉฐ ์˜ฌ๋ฐ”๋ฅธ ๊ธฐ์ˆ  ์Šคํƒ ์‚ฌ์šฉ์€ ํ”„๋กœ์ ํŠธ์˜ ์„ฑ๊ณต๊ณผ ์‹คํŒจ๋ฅผ ๊ฒฐ์ •์ง“๋Š” ์ค‘์š”ํ•œ ์—ด์‡ ๋‹ค. ๋ฌผ๋ก  ํ•„์ž๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง์ ‘ ์šด์˜ํ•˜๊ณ  ์žˆ์ง€๋„ ์•Š๊ณ , ์‚ฌ์šฉํ•  ๊ธฐ์ˆ  ์Šคํƒ์„ ์„ ํƒํ•  ์ž…์žฅ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ์‚ฌํ•ญ์ด ์—†๋‹ค. ํ•˜์ง€๋งŒ 2020๋…„์„ ์‚ด์•„๊ฐ€๋Š” Front-End ๊ฐœ๋ฐœ์ž๋กœ์„œ ์Œ“์•„๋‚˜๊ฐ€์•ผ ํ•  ๊ธฐ์ˆ  ์Šคํƒ์˜ ๋ฐฉํ–ฅ์„ฑ์„ ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๊ณ ์ž ํฌ์ŠคํŒ…์„ ํ•ด๋ณธ๋‹ค. 2020๋…„ ์›น ๊ธฐ์ˆ  ๊ฐœ๋ฐœ ์Šคํƒ ์ตœ์‹  ์›น ๊ธฐ์ˆ  ์Šคํƒ์„ ์„ ํƒํ•˜๊ธฐ ์ด์ „์— ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค. ์›น ๊ฐœ๋ฐœ์—๋Š” ํฌ๊ฒŒ ํด๋ผ์ด์–ธํŠธ ์ชฝ๊ณผ ์„œ๋ฒ„ ์ชฝ์˜..
JavaScript Immutability ํ˜„์—…์— ๋“ค์–ด์™€ ๋ณธ๊ฒฉ์ ์œผ๋กœ JavaScript๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋˜๋ฉด์„œ ํ•ญ์ƒ ์˜๋ฌธ์ด ๋“ค์—ˆ๋˜ ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‹ค. " var ์„ ์–ธ๋ฌธ ํ•˜๋‚˜๋กœ number, Array ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…๋“ค์„ ๋‹ค๋ฃจ๋ฉด์„œ ์–ด๋–ค ํƒ€์ด๋ฐ์— ๊ฐ’์„ ์œ ์ง€ํ•˜๊ณ  ๋ณ€ํ™”์‹œ์ผœ์•ผ ํ•˜์ง€? " ์ ์€ ์–‘์˜ ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹Œ 10000๊ฐœ, ๋˜๋Š” ๊ทธ ์ด์ƒ์˜ ์ˆ˜๋งŽ์€ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ์ œ์–ดํ•˜๊ธฐ๋Š” ์‰ฝ์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. JS Immutability๋Š” ํŠนํžˆ React์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” redux, time travel๊ณผ ๊ฐ™์€ ๊ณ ๊ธ‰ ๊ธฐ๋ฒ•์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ๊ธฐ์ดˆ๊ฐ€ ๋˜๊ธฐ๋„ ํ•œ๋‹ค. ์ฐธ๊ณ ๋กœ JS Immutability๊ฐ€ React์˜ ๊ธฐ์ดˆ ์ง€์‹ state๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋œ๋‹ค. ํ•„์ž๋Š” react๋ฅผ ์ฒ˜์Œ ์ ‘ํ•œ ๋’ค Immutability๋ฅผ ์ •๋ฆฌํ•˜๋ฉด์„œ ์œ ๋ ˆ์นด๋ฅผ ์™ธ์ณค๋‹ค... JavaSc..
๊ฐœ๋ฐœ์ž๋กœ์„œ ๊ผญ ์•Œ์•„์•ผ ํ•  ์–ธ์–ด 2๊ฐ€์ง€ ์ตœ๊ทผ ์ง€์ธ์˜ ์ถ”์ฒœ์„ ํ†ตํ•ด ํฌํ”„ tv ์œ ํŠœ๋ธŒ ์˜์ƒ์„ ์ถ”์ฒœ๋ฐ›์•„ ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. ๋งํฌ ๊ฐœ๋ฐœ์ž๋กœ์„œ ๊ผญ ์•Œ์•„์•ผ ํ•  ์–ธ์–ด 2๊ฐ€์ง€ ํฅ๋ฏธ๋กœ์šด ์ฃผ์ œ ์•„๋ž˜ ํ˜„์—… ์‹œ์žฅ์˜ ์ƒํ™ฉ๋„ ๋Œ์•„๋ณผ ์ˆ˜ ์žˆ์–ด์„œ ํฌ์ŠคํŒ…์„ ์ ์–ด๋ณธ๋‹ค. ๊ฐœ๋ฐœ์ž๋กœ์„œ ๊ผญ ์•Œ์•„์•ผ ํ•  ์–ธ์–ด 2๊ฐ€์ง€ 1. Managed language - garbage collector๊ฐ€ ๋˜๋Š” ์–ธ์–ด - ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ง์ ‘ ํ•ด์ฃผ๋Š” ์–ธ์–ด - Java, python, C#, JS 2. Unmanaged language - ํ•˜๋“œ์›จ์–ด์— ๊ฐ€๊นŒ์šด ์–ธ์–ด - C, C++, Assembly ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ Framework R&D ํ˜„์—…์— ๋“ค์–ด์˜ค๋ฉด์„œ ์ฃผ ์–ธ์–ด๊ฐ€ JAVA์—์„œ JS๊ฐ€ ๋˜์—ˆ๋‹ค. (JAVA๋„ ๊ทธ๋ฆฌ ๋Šฅ์ˆ™ํ•˜์ง„ ์•Š์•˜๋‹ค.. ํ•™๋ถ€์ƒ์˜ ํํ•ด) ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์›น ํผ๋ธ”๋ฆฌ์‹ฑ๋งŒ์„ ์œ„ํ•œ ์–ธ์–ด๋ผ๋Š” ์•ฝ๊ฐ„์˜ ๊ณ ์ •๊ด€๋… ์†์—์„œ ๊ทธ์ €..
์ฒซ ํฌ์ŠคํŒ…, 2020 tistory๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค! ์ด๋ฒˆ 2์›”์€ ์—ฌ๋Ÿฌ๋ชจ๋กœ ์‹ฌ๊ฒฝ์˜ ํฐ ๋ณ€ํ™”๋“ค์ด ์žˆ์—ˆ๋‹ค. ํ•ญ์ƒ ๋ฐ€์–ด๋‘๋Š” ์ˆ™์ œ๊ฐ™์•˜๋˜ ์ž๊ธฐ๊ฐœ๋ฐœ์— ์†์„ ์–น๊ธฐ ์‹œ์ž‘ํ•œ ๊ฒƒ. ํ˜„์žฌ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์‹œ์žฅ์„ ์‚ดํŽด๋ณด๋‹ˆ "Front-End = Design" ์ด๋ผ๋Š” ๊ณ ์ • ๊ด€๋…์ด ๊นจ์ง€๋ฉด์„œ ์—ฌํƒœ๊นŒ์ง€์˜ ๋‚ด ์ปค๋ฆฌ์–ด์™€ ์–ด๋ ธ์„ ๋•Œ๋ถ€ํ„ฐ ๊ทธ๋ ค์™”๋˜ ๋ฏธ๋ž˜์— ์ผ๊ด€์„ฑ์„ ๋Š๋ผ๋ฉฐ ํฅ๋ฏธ๋กญ๊ฒŒ ๋Š๊ปด์ง„๋‹ค. ๋‚ด๊ฐ€ ์–ด๋–ค ๋ถ€๋ถ„์ด ๋ถ€์กฑํ•œ์ง€ ์‹ค๊ฐ ํ•˜๋ฉด์„œ ์‹ฑ์ˆญ์ƒ์ˆญํ•œ ๋งˆ์Œ์„ ๋‹ค ์žก์œผ๋ฉฐ ๋‚ด๊ฐ€ 2์›” ํ•œ ๋‹ฌ๋™์•ˆ ํ•œ ๊ฒƒ๋“ค๊ณผ ํ•ด์•ผํ•  ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•ด๋ณธ๋‹ค. ์š”๊ฐ€ ์‹œ์ž‘ ํ•œ๋‹ฌ ์ฐจ - ์ผ์ฃผ์ผ๋งŒ์— ์ž์„ธ๊ฐ€ ๋งŽ์ด ๊ต์ •๋˜์—ˆ๋‹ค. ์‹ฌ์‹  ์•ˆ์ •์— ์ข‹์Œ. React.js, node.js ํŠœํ† ๋ฆฌ์–ผ - ์ƒํ™œ์ฝ”๋”ฉ๊ณผ Velopert ๊ฐ•์˜๋ฅผ ํ™œ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ๋‚ด๊ฒŒ ํ•„์š”ํ•œ ๊ฒƒ? - GitHub Commit / tistory ์šด์˜ / ๋ฉ”๋ชจ ์ƒํ™œ..