์žฌ๋ฐŒ๊ฒŒ ํ•ฉ์‹œ๋‹ค

๊ธฐ๋กํ•˜๊ธฐ, ๊ฐ€์‹œํ™”ํ•˜๊ธฐ

VanillaJS 4

Vanilla Javascript๋กœ SPA ๊ตฌํ˜„ํ•˜๊ธฐ(ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์‡ผํ•‘๋ชฐ SPA)

โœ… SPA(Single Page Application) ์ดํ•ดํ•˜๊ธฐ ํŽ˜์ด์ง€ ์ด๋™์˜ ๊ณผ์ •์„ ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜๊ฒŒ ์„ค๋ช…ํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ƒˆ๋กœ์šด url์„ ์š”์ฒญํ•œ๋‹ค. (์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ฑฐ๋‚˜, ๋’ค๋กœ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋Š” ๋“ฑ) ์š”์ฒญํ•œ url์— ๋งž๋Š” ๋ฆฌ์†Œ์Šค(html, css, js)๋ฅผ ํ™”๋ฉด์— ๋ Œ๋”๋งํ•œ๋‹ค. ๊ฐ„๋‹จํ•˜์ฃ ? MPA(Multiple Page Application), SPA(Single Page Application) ๋ชจ๋‘ ํŽ˜์ด์ง€ ์ด๋™์˜ ๊ณจ์ž๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ MPA์™€ SPA๋กœ ๊ตฌ๋ถ„์ด ๋ฉ๋‹ˆ๋‹ค. MPA์˜ ๋ฆฌ์†Œ์Šค ์š”์ฒญ ๋ฐฉ์‹ ์‚ฌ์šฉ์ž๊ฐ€ ์ƒˆ๋กœ์šด url์„ ์š”์ฒญ ํ•ด๋‹น url์— ๋Œ€ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์„œ๋ฒ„์— ์š”์ฒญ ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ์‘๋‹ต์œผ๋กœ ํ™”๋ฉด์„ ๋ Œ๋”๋ง ์ฆ‰, ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ์„œ..

Vanilla JS 2022.11.11

Vanilla Javascript๋กœ ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค๊ธฐ

๋ฐ”๋‹๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์‡ผํ•‘๋ชฐ SPA๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด, ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋  ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •์˜ํ–ˆ๋‹ค. ํ™ฉ์ค€์ผ๋‹˜์˜ ๊ธ€์„ ์ฐธ๊ณ ํ•ด ์ดˆ์•ˆ์„ ์งœ๊ณ , ์ˆ˜์ •์„ ๊ฑฐ์ณค๋‹ค. ๊ธฐ์กด ์ฝ”๋“œ constructor: ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ฆ‰ ์ดˆ๊ธฐ state/props๋ฅผ ์„ค์ •ํ•˜๊ณ , template ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฌผ์ธ ๋งˆํฌ์—…์„ ๋ Œ๋”๋งํ•˜๊ณ , ์ด๋ฒคํŠธ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ•œ๋‹ค. setup: ์ดˆ๊ธฐ state๋ฅผ ์„ค์ •ํ•œ๋‹ค. mounted: ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. template: ์ปดํฌ๋„ŒํŠธ์˜ state๋ฅผ ๋ฐ˜์˜ํ•œ ๋งˆํฌ์—…์„ ๋ฆฌํ„ดํ•œ๋‹ค. render: $target๋‚ด์— ๋งˆํฌ์—…์„ ๋ Œ๋”๋งํ•œ๋‹ค. ๊ทธ ๋‹ค์Œ mounted ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. setState: ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ , render ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. mounted ๋ฉ”์„œ๋“œ๋ฅผ ์ข€ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด์ž. ์˜ˆ์‹œ๋กœ ํ™ฉ..

“DOM์„ ์ง์ ‘ ์กฐ์ž‘ํ•œ๋‹ค” ์˜ ์˜๋ฏธ์™€ ์ปดํฌ๋„ŒํŠธ์˜ ๋ณธ์งˆ

Vanilla Javascript๋กœ ์›น ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค๊ธฐ | ๊ฐœ๋ฐœ์ž ํ™ฉ์ค€์ผ ์œ„ ๊ธ€์„ ์ฝ๋‹ค๊ฐ€ ํ•œ ๊ฐ€์ง€ ์˜๋ฌธ์ด ์ƒ๊ฒผ๋‹ค. ์ด์ œ๋Š” ์ง์ ‘์ ์œผ๋กœ DOM์„ ๋‹ค๋ฃจ๋Š” ํ–‰์œ„๊ฐ€ ๊ธ‰๊ฒฉํ•˜๊ฒŒ ๊ฐ์†Œํ–ˆ๊ณ , ์ƒํƒœ(State) ๋ฅผ ๊ธฐ์ค€์œผ๋กœ DOM์„ ๋ Œ๋”๋ง ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋ฐœ์ „ํ•œ ๊ฒƒ์ด๋‹ค. DOM์ด ๋ณ€ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ State์— ์ข…์† ๋˜์–ด๋ฒ„๋ฆฐ ๊ฒƒ์ด๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋งํ•˜๋ฉด, State๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ DOM์ด ๋ณ€ํ•˜๋ฉด ์•ˆ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด ๊ธ€์€ DOM ์š”์†Œ์— ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ๊ณผ state์— ๋”ฐ๋ผ DOM์„ ๋ Œ๋”๋งํ•˜๋Š” ๊ฒƒ์„ ์„œ๋กœ ๋Œ€์ฒ™์ ์— ์žˆ๋Š” ๋ฐ˜๋Œ€ ๊ฐœ๋…์œผ๋กœ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ๋‹ค. ๋‚œ ์ด ๋‘ ๊ฐ€์ง€๊ฐ€ ์–ด์งธ์„œ ๋ฐ˜๋Œ€ ๊ฐœ๋…์ด ๋˜๋Š” ๊ฒƒ์ธ์ง€ ์ดํ•ด๊ฐ€ ์ž˜ ๋˜์ง€ ์•Š์•˜๋‹ค. state์— ๋”ฐ๋ผ DOM์„ ๋ Œ๋”๋งํ•˜๋Š” ์•„๋ž˜ ์ฝ”๋“œ์—์„œ๋„, innerHTML API๋ฅผ ์‚ฌ์šฉํ•ด DOM์— ์ ‘๊ทผํ•˜์ง€ ์•Š๋‚˜..

Vanilla JS 2022.10.08

๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์˜ ์ฐจ์ด์ 

๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ๊ฐ’์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ์ (.) ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ ๋Œ€๊ด„ํ˜ธ([]) ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ ๋‘ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐจ์ด์ ์„ ๊ฐ€์ง„๋‹ค. ์  ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์˜ค๋ฅธ์ชฝ์—๋Š” ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์ธ ๋‹จ์ˆœ ์‹๋ณ„์ž๊ฐ€ ์™€์•ผ ํ•œ๋‹ค. ๋ฐ˜๋ฉด ๋Œ€๊ด„ํ˜ธ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์˜ค๋ฅธ์ชฝ์—๋Š” ๋ฌธ์ž์—ด๋กœ ํ‰๊ฐ€๋˜๋Š” ํ‘œํ˜„์‹์ด ์™€์•ผ ํ•œ๋‹ค. let author = book.author; // ์  ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ let title = book["main title"]; // ๋Œ€๊ด„ํ˜ธ ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ ๋‘ ๋ฐฉ๋ฒ•์˜ ์šฉ๋ก€ ์ƒ์˜ ์ฐจ์ด๋Š” ์ ‘๊ทผํ•˜๋ ค๋Š” ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€ ์— ์žˆ๋‹ค. ์‹๋ณ„์ž์˜ ๊ฒฝ์šฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์—, ํ”„๋กœ๊ทธ๋žจ์—์„œ ์กฐ์ž‘ํ•  ์ˆ˜ ์—†๋‹ค. ๋ฐ˜๋ฉด ๋ฌธ์ž์—ด์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๊ธฐ์— ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๊ณ  ์กฐ์ž‘ํ•  ..

Vanilla JS 2022.09.11