๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

๐Ÿ“บ Front End71

[Javascript-Core] Execution Context, ์‹คํ–‰ ๋ฌธ๋งฅ์— ๊ด€ํ•˜์—ฌ ์•Œ์•„๋ณด์ž. Execution Context ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์‹คํ–‰ํ•  ์ฝ”๋“œ์— ํ•„์š”ํ•œ ํ™˜๊ฒฝ ์ •๋ณด๋ฅผ ๋ชจ์€ ๊ฐ์ฒด๋ฅผ ๋œปํ•œ๋‹ค. ์ด๋Š”, OS๋ฅผ ํ•™์Šตํ•˜๋‹ค๊ฐ€ ๋งˆ์ฃผํ•˜๊ฒŒ ๋˜๋Š” ์‹คํ–‰ ๋ฌธ๋งฅ, ์‹คํ–‰ ์ปจํ…์ŠคํŠธ, ์ต์Šคํ์…˜ ์ปจํ…์ŠคํŠธ์™€ ๋‹ค๋“ค ๋™์ผํ•œ ๊ฐœ๋…์ด๋‹ค. ์กฐ๊ธˆ ์‰ฝ๊ฒŒ ์ด์•ผ๊ธฐ ํ•œ๋‹ค๋ฉด ์˜ˆ๋ฅผ ๋“ค์–ด์„œ ์šฐ๋ฆฌ๊ฐ€ var a = 10; function hello() { var b = "hello"; return b; } ์™€ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์—ฌ๊ธฐ์„œ ์‹คํ–‰์— ํ•„์š”ํ•œ ํ™˜๊ฒฝ ์ •๋ณด๋Š” var a = 10๊ณผ hello()ํ•จ์ˆ˜์™€ var b = 'hello'๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์‹๋ณ„์ž์™€ ๋ณ€์ˆ˜๋“ฑ๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ผ๊ณ  ํ•œ๋‹ค. ์ด๋Ÿฐ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์ฝœ ์Šคํƒ์— ์˜ํ•ด ์‹คํ–‰ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๋Š”๋ฐ, ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ Interpreting ํ•˜๋ฉด์„œ ์ฝœ.. 2020. 7. 27.
[๋ฆฌ์•กํŠธ ๋ถ„์„ํ•˜๊ธฐ] ๋ฆฌ์•กํŠธ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋ผ์šฐํŒ… ํ•˜๋Š” ๋ฐฉ๋ฒ• (3) ๋ถ€์ œ :: react-router-dom์„ ์ด์šฉํ•ด์„œ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ํ•˜๊ธฐ ์ด ๊ธ€์€ ๋ฆฌ์•กํŠธ์˜ ์ดˆ์‹ฌ์ž๋“ค์„ ์œ„ํ•œ ๊ธ€๋กœ ๊นŠ์€ ๋‚ด์šฉ์€ ์ตœ๋Œ€ํ•œ ๋ฐฐ์ œํ•˜๊ณ  ์‰ฌ์šด ๊ฐœ๋…์— ๋Œ€ํ•ด ์ž‘์„ฑํ•˜์˜€๊ณ , ๋ฆฌ์•กํŠธ์˜ ์ง„์ž… ์žฅ๋ฒ…์„ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•œ ์š”์†Œ๋กœ ์–ด๋ ค์šด ๋‚ด์šฉ์ด ์ƒ๋žต๋˜์–ด ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๊ฝค๋‚˜ ํ•ต์‹ฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— 3๋ถ€์ž‘์œผ๋กœ ๋‚˜๋ˆ ์„œ ์„ค๋ช…ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ํ•ด๋‹น ๊ธ€์— ๋Œ€ํ•ด์„œ ๋ณธ์ธ์ด ์ด ๋ถ€๋ถ„์€ ๋„˜์–ด๊ฐ€๋„ ๋˜๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„์€ ๋„˜์–ด๊ฐ€์„œ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๊ธธ์ง€ ์•Š์€ ๊ธ€์ด๋ฏ€๋กœ ๊ฐ€๋ณ๊ฒŒ ์ฝ๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค. 1๋ถ€ ๋ฆฌ์•กํŠธ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋ผ์šฐํŒ… ํ•˜๋Š” ๋ฐฉ๋ฒ• 2๋ถ€ Browser History API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ํ•˜๊ธฐ 3๋ถ€ react-router-dom์„ ์ด์šฉํ•ด์„œ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ํ•˜๊ธฐ ์šฐ๋ฆฐ ์ง€๋‚œ ์‹œ๊ฐ„์— Brower Histroty API๋ฅผ ํ†ตํ•ด์„œ ํŽ˜์ด์ง€๋ฅผ ์„œ๋ฒ„์˜ ์š”์ฒญ ์—†์ด ๋ผ์šฐํŒ… ํ•˜๋Š”.. 2020. 7. 20.
[๋ฆฌ์•กํŠธ ๋ถ„์„ํ•˜๊ธฐ] ๋ฆฌ์•กํŠธ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋ผ์šฐํŒ… ํ•˜๋Š” ๋ฐฉ๋ฒ• (2) ๋ถ€์ œ :: Broswer History API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ํ•˜๊ธฐ ์ด ๊ธ€์€ ๋ฆฌ์•กํŠธ์˜ ์ดˆ์‹ฌ์ž๋“ค์„ ์œ„ํ•œ ๊ธ€๋กœ ๊นŠ์€ ๋‚ด์šฉ์€ ์ตœ๋Œ€ํ•œ ๋ฐฐ์ œํ•˜๊ณ  ์‰ฌ์šด ๊ฐœ๋…์— ๋Œ€ํ•ด ์ž‘์„ฑํ•˜์˜€๊ณ , ๋ฆฌ์•กํŠธ์˜ ์ง„์ž… ์žฅ๋ฒ…์„ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•œ ์š”์†Œ๋กœ ์–ด๋ ค์šด ๋‚ด์šฉ์ด ์ƒ๋žต๋˜์–ด ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๊ฝค๋‚˜ ํ•ต์‹ฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— 3๋ถ€์ž‘์œผ๋กœ ๋‚˜๋ˆ ์„œ ์„ค๋ช…ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ํ•ด๋‹น ๊ธ€์— ๋Œ€ํ•ด์„œ ๋ณธ์ธ์ด ์ด ๋ถ€๋ถ„์€ ๋„˜์–ด๊ฐ€๋„ ๋˜๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„์€ ๋„˜์–ด๊ฐ€์„œ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๊ธธ์ง€ ์•Š์€ ๊ธ€์ด๋ฏ€๋กœ ๊ฐ€๋ณ๊ฒŒ ์ฝ๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค. 1๋ถ€ ๋ฆฌ์•กํŠธ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋ผ์šฐํŒ… ํ•˜๋Š” ๋ฐฉ๋ฒ• 2๋ถ€ Broswer History API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ํ•˜๊ธฐ 3๋ถ€ react-router-dom์„ ์ด์šฉํ•ด์„œ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ํ•˜๊ธฐ ์šฐ๋ฆฌ๋Š” ์ €๋ฒˆ ์‹œ๊ฐ„์— ๋ฆฌ์•กํŠธ๊ฐ€ ํŽ˜์ด์ง€์—์„œ ์–ด๋–ค ์‹์œผ๋กœ ๋ผ์šฐํŒ… ๋˜๊ธธ ์›ํ•˜๋Š”์ง€? ์— ๋Œ€ํ•ด์„œ ์ž ๊น ์•Œ์•„๋ณด์•˜๋‹ค.. 2020. 7. 20.
[๋ฆฌ์•กํŠธ ๋ถ„์„ํ•˜๊ธฐ] ๋ฆฌ์•กํŠธ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋ผ์šฐํŒ… ํ•˜๋Š” ๋ฐฉ๋ฒ• (1) ๋ถ€์ œ :: Single Page Application์ด ๋ฌด์—‡์ด๊ณ  ์–ด๋–ป๊ฒŒ ๋ฆฌ์•กํŠธ์—์„œ ์‚ฌ์šฉํ• ๊นŒ? ์ด ๊ธ€์€ ๋ฆฌ์•กํŠธ์˜ ์ดˆ์‹ฌ์ž๋“ค์„ ์œ„ํ•œ ๊ธ€๋กœ ๊นŠ์€ ๋‚ด์šฉ์€ ์ตœ๋Œ€ํ•œ ๋ฐฐ์ œํ•˜๊ณ  ์‰ฌ์šด ๊ฐœ๋…์— ๋Œ€ํ•ด ์ž‘์„ฑํ•˜์˜€๊ณ , ๋ฆฌ์•กํŠธ์˜ ์ง„์ž… ์žฅ๋ฒ…์„ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•œ ์š”์†Œ๋กœ ์–ด๋ ค์šด ๋‚ด์šฉ์ด ์ƒ๋žต๋˜์–ด ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๊ฝค๋‚˜ ํ•ต์‹ฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— 3๋ถ€์ž‘์œผ๋กœ ๋‚˜๋ˆ ์„œ ์„ค๋ช…ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ํ•ด๋‹น ๊ธ€์— ๋Œ€ํ•ด์„œ ๋ณธ์ธ์ด ์ด ๋ถ€๋ถ„์€ ๋„˜์–ด๊ฐ€๋„ ๋˜๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„์€ ๋„˜์–ด๊ฐ€์„œ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๊ธธ์ง€ ์•Š์€ ๊ธ€์ด๋ฏ€๋กœ ๊ฐ€๋ณ๊ฒŒ ์ฝ๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค. 1๋ถ€ ๋ฆฌ์•กํŠธ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋ผ์šฐํŒ… ํ•˜๋Š” ๋ฐฉ๋ฒ• 2๋ถ€ Broswer History API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ํ•˜๊ธฐ 3๋ถ€ react-router-dom์„ ์ด์šฉํ•ด์„œ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ํ•˜๊ธฐ ์ด๋ฒˆ ์ฃผ์ œ์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„  ์šฐ์„  ํŽ˜์ด์ง€๊ฐ€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š”์ง€ ์•Œ์•„์•ผ ํ•œ.. 2020. 7. 20.
[๋ฆฌ์•กํŠธ ๋ถ„์„ํ•˜๊ธฐ] ๋ฆฌ์•กํŠธ์˜ ํ•ต์‹ฌ JSX์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. (๋ถ€์ œ :: ๋ฆฌ์•กํŠธ์—์„œ๋Š” JSX๋ฅผ ์–ด๋–ป๊ฒŒ ์ด์šฉํ• ๊นŒ?) ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๊ณ„์† ๋ฆฌ์•กํŠธ์— ๋Œ€ํ•œ ํ•ต์‹ฌ์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐ๋ฅผ ํ–ˆ์—ˆ๋‹ค. ์ด์ œ ๊ทธ ๋ฆฌ์•กํŠธ๋ผ๋Š” ๊ฒƒ์ด ์–ด๋–ค ์‹์œผ๋กœ ๋Œ์•„๊ฐ€๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž. JSX JSX๋Š” JavascriptXML์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ด๋Š” Javascript๋„ ์•„๋‹ˆ๊ณ  HTML๋„ ์•„๋‹Œ ๊ฒƒ์ด๋‹ค. ์ •ํ™•ํžˆ๋Š” ์Šคํฌ๋ฆฝํŠธ์— ํ™•์žฅ ๋ฌธ๋ฒ•์ด๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ์šฐ๋ฆฌ๋Š” ๋ฆฌ์•กํŠธ๋กœ ์ด JSX๋ฅผ ํ• ์šฉํ•˜์—ฌ UI๋ฅผ ๊ตฌ์„ฑํ•  ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ๋ง ํ•˜๋ฉด ๋„ˆ๋ฌด ์–ด๋ ค์šฐ๋ฏ€๋กœ ์šฐ๋ฆฌ๊ฐ€ create-react-app์„ ํ†ตํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ , ํ•ด๋‹น ์ฝ”๋“œ์—์„œ JSX๋ž€ ๋ฌด์—‡์ธ์ง€ ๋ณด์ด๊ฒ ๋‹ค. ์ฝ”๋“œ๋กœ ๋ด๋ณด์ž ์šฐ๋ฆฌ์˜ ํ”„๋กœ์ ํŠธ์—์„œ Index.js์— ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ํ•œ ๋ฒˆ ๋ด๋ณด์ž. ReactDOM.render();๋ผ๋Š” ๊ตฌ๋ฌธ์—์„œ ์šฐ๋ฆฌ๋Š” JSX๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค. ์›๋ž˜ ์ฝ”๋“œ๋ฅผ ์ง€์›Œ๋ณด๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ์„ฑํ•ด๋ณด์ž... 2020. 7. 20.
[๋ฆฌ์•กํŠธ ๋ถ„์„ํ•˜๊ธฐ] Create-React-App์œผ๋กœ ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•ด๋ณด์ž. ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” ์™œ ์šฐ๋ฆฌ๋Š” ๋ฆฌ์•กํŠธ์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€์™€ Create-React-App์ด ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” create-reacat-app์œผ๋กœ ์‹ค์ œ๋กœ ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•ด๋ณด์ž. ํ•ด๋‹น ๊ฒŒ์‹œ๋ฌผ์˜ ์†Œ์Šค์ฝ”๋“œ๋Š” ๋ฆฌ์•กํŠธ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์˜ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ๋‹ค ์“ด ๊ธ€์ž…๋‹ˆ๋‹ค. ๋ฆฌ์•กํŠธ๋Š” 4 ๊ฐ€์ง€์˜ ๋ฐฉ์‹์œผ๋กœ Create-React-App์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. NPM NPX Yarn CDN (react) ๋ณ„๋กœ ์–ด๋ ต์ง€ ์•Š์œผ๋ฏ€๋กœ ์ฐจ๋ก€๋Œ€๋กœ ๋ด๋ณด์ž. ์ด๋“ค์ค‘์— ๊ผญ ๋ฌด์—‡์„ ์จ์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์—†๋‹ค. ๊ทธ๋ƒฅ ์›ํ•˜๋Š” ๋„๊ตฌ๋กœ ์‹œ์ž‘์„ ํ•˜๋ฉด๋œ๋‹ค. npm์œผ๋กœ create-react-app ์‹œ์ž‘ํ•˜๊ธฐ npm install -g ๋Š” pc์— globalํ•˜๊ฒŒ ์„ค์ •ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. npx๋กœ create-r.. 2020. 7. 20.