๐Ÿค”์ œ์ด์ฟผ๋ฆฌ๋Š” ์™œ FD ๋กœ๋“œ๋งต์—์„œ ์‚ญ์ œ ๋˜์—ˆ์„๊นŒ?

sik2ยท2021๋…„ 6์›” 3์ผ
10

JavaScript

๋ชฉ๋ก ๋ณด๊ธฐ
4/11

FD ๋กœ๋“œ๋งต์—์„œ ์ œ์™ธ๋œ ์ œ์ด์ฟผ๋ฆฌ

๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด์„œ ๋ฌด์—‡์„ ์ค€๋น„ ํ• ์ง€์— ๋Œ€ํ•ด์„œ ์กฐ์‚ฌํ•ด๋ณธ ์‚ฌ๋žŒ์€ ๊ฐœ๋ฐœ์ž ๋กœ๋“œ๋งต์ด๋ผ๋Š” ๊ฑธ ํ•œ๋ฒˆ ์ฏค ๋ดค์„ ๊ฒƒ์ด๋‹ค. ์›Œ๋‚™ ์œ ๋ช…ํ•ด์„œ ์„ค๋ช…์„ ์ƒ๋žตํ•˜๊ณ  ๋Œ€์ถฉ ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ ํ•™์Šต ์ปค๋ฆฌํ˜๋Ÿผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

ํ•œ๋•Œ ์ด์Šˆ๊ฐ€ ๋œ ์‚ฌ๊ฑด์ด 2017๋…„์—์„œ 2018๋…„๋„ ํ”„๋ก ํŠธ์—”๋“œ ๋กœ๋“œ๋งต์—์„œ ์ œ์ด์ฟผ๋ฆฌ๊ฐ€ ๋น ์ง„ ์ผ์ด๋‹ค.

์ด๋ฅผ ๋‘๊ณ  ๊ฐ‘๋ก ์„๋ฐ•์ด ์ผ์–ด๋‚ฌ๋‹ค. ์ œ์ด์ฟผ๋ฆฌ๋Š” ์ด์ œ ํ•œ๋ฌผ ๊ฐ”์œผ๋‹ˆ ๋ฐฐ์šฐ์ง€ ๋ง์•„์•ผํ•˜๋‹ˆ ๊ทธ๋ž˜๋„ ์•„์ง์€ ๋ฐฐ์›Œ์•ผํ•˜๋‹ˆ ๋“ฑ๋“ฑ...

(2020, 2021๋…„ ๋ฒ„์ „ ๋˜ํ•œ ๋น ์ ธ์žˆ๋‹ค)

์‚ฌ์‹ค ์ด ๋ฌธ์ œ๋Š” ์ •๋‹ต์€ ์—†์ง€๋งŒ reactJS, vueJS ์™€ ๊ฐ™์€ SPA๋ฅผ ๊ณต๋ถ€ํ•œ๋‹ค๋ฉด ํ•œ๋ฒˆ์ฏค ์ƒ๊ฐ ํ•ด๋ณผ ๋งŒํ•˜๋‹ค.

์ตœ๊ทผ์— 'DOM์„ ๊นจ์šฐ์น˜๋‹ค'๋ผ๋Š” ์ฑ…์„ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜๋ฉด์„œ ๊ธ€๋กœ ๋‚จ๊ฒจ ๋ณด๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™์•„ ๋„์ ์—ฌ ๋ณด์•˜๋‹ค.

DOM ์ด ๋ญํ•˜๋Š” ๋…€์„์ด๋‹ˆ ?

DOM ์ด์•ผ ์•ž๋‹จ ๊ฐœ๋ฐœ์„ ํ•ด๋ณด์‹ ๋ถ„์ด๋ผ๋ฉด ํ•œ๋ฒˆ์ฏค์€ ๋“ค์–ด๋ดค์„ ๊ฒƒ์ด๋‹ค. ์›น์—์„œ ์•„์ฃผ ์ค‘์š”ํ•œ ๋…€์„์ด๋‹ค.

Document Object Model ์˜ ์•ฝ์ž๋กœ ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ์œผ๋กœ ๋ฒˆ์—ญ์ด ๋œ๋‹ค. ์‚ฌ์ „์‹ ์ •์˜๋Š” ๊ฐ์„คํ•˜๊ณ  ๋Œ€์ฒด ์ด๋…€์„์ด ํ•˜๋Š” ์—ญํ• ์ด ๋ญ˜๊นŒ ?

๋‹น์—ฐํ•œ ๊ฒƒ์— ์˜๋ฌธ์„ ๊ฐ€์ ธ๋ณด์ž. ์šฐ๋ฆฌ๋Š” ์ปดํ“จํ„ฐ ์ž‘์—…์„ ํ• ๋•Œ ํ™•์žฅ์ž๊ฐ€ ๋‹ค๋ฅด๋ฉด ํ˜ธํ™˜์ด ํž˜๋“ค๋‹ค๋Š” ๊ฑธ ์•Œ๊ณ  ์žˆ๋‹ค.

๊ฐ€๋ น ๋งฅ์—์„œ .exe ํŒŒ์ผ์„ ์„ค์น˜ ํ•  ์ˆ˜ ์—†๋“ฏ์ด...

๋‹ค์‹œ ๋Œ์•„์™€์„œ ์šฐ๋ฆฌ๋Š” ํŒŒ์ผ๋ช….html ํŒŒ์ผ๋ช….js ํŒŒ์ผ์€ ๋‘˜์€ ํ™•์žฅ์ž๊ฐ€ ์–ด๋ฉดํžˆ ๋‹ค๋ฅด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ html ์†์„ฑ์— ์ ‘๊ทผํ•ด ๋ฌด์—‡์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์ด๋ฒคํŠธ๋ฅผ ๊ฑธ ์ˆ˜ ์žˆ๋‹ค. ๋‹น์—ฐํ•˜์ง€๋งŒ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์‹ ๊ธฐํ•œ ์ผ์ธ๋ฐ ๊ทธ ์ด์œ ๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” API ๋•Œ๋ฌธ์ธ๋ฐ ์ด API ์ด๋ฆ„์ด DOM API๋‹ค.

+++)

API ๋„Œ ๋˜ ๋ญ๋ƒ??

๊ตญ๋‚ด์˜ ์ˆ˜ ๋งŽ์€ ์–ด๋Œ‘ํ„ฐ์™€ ํ”Œ๋Ÿฌ๊ทธ ์ƒ์‚ฐ ํšŒ์‚ฌ ์žˆ๋‹ค. "220V์˜ ์ „์••, 60Hz์˜ ์ฃผํŒŒ์ˆ˜์ธ 2ํ•€ํ˜• ์ฝ˜์„ผํŠธ" ๋ผ๋Š” ํ‘œ์ค€์ด ์žˆ๊ธฐ์— ์šฐ๋ฆฌ๋Š” ํšŒ์‚ฌ์— ๊ด€๊ณ„์—†์ด ๊ฒฝ์ œ์„ฑ์„ ๊ณ ๋ คํ•ด ์ œํ’ˆ์„ ๊ตฌ๋งคํ•ด์„œ ์“ฐ๋ฉด ๋œ๋‹ค.
์ด๋ ‡๋“ฏ API ๋Š” Application Programming Interface ์•ฝ์ž๋กœ ์–ด๋– ํ•œ ๊ฑธ ํ‘œ์ค€์„ ์ •ํ•ด์„œ ๋งŒ๋“  ๋’ค ๊ทธ ํ‘œ์ค€์— ๋งž์ถ”๋ฉด ๋ˆ„๊ตฌ๋“  ์ด์šฉ ๊ฐ€๋Šฅ ํ•˜๋„๋ก ๋งŒ๋“ ๋‹ค.


๋‹ค์‹œ ๋งํ•˜๋ฉด DOM API ์—์„œ ์ •ํ•œ ํ‘œ์ค€์ด ์žˆ๊ธฐ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊ทธ ํ‘œ์ค€์„ ๋งž์ถฐ ์ž‘์„ฑ์„ ํ•˜๋ฉด Document ์ฆ‰, html ์†์„ฑ์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ € ์ถ˜์ถ”์ „๊ตญ ์‹œ๋Œ€์—๋Š” ๊ฐ ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ํ‘œ์ค€์ด ๋‹ฌ๋ž๋‹ค. ํŠนํžˆ IE๋Š” ์ฐฝ์˜์ ์ด๋‹ค ์‹ถ์„ ์ •๋„๋กœ ๋…์ž ๋…ธ์„ ์„ ํƒ”๋‹ค. (๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋Š” ์• ํ”Œ๊ณผ ๊ฐ™์€ ์„ฑ๊ณต์„ ํ–ˆ๊ธธ ๋ฐ”๋žฌ๊ฒ ์ง€๋งŒ ์•„์ฃผ ์•„์ฃผ ๋‹คํ–‰ํžˆ ์ตœ๊ทผ ๋™ํ–ฅ์„ ๋ณด๋ฉด gg ์น˜๊ณ  ํ‘œ์ค€ ๋…ธ์„ ์— ํ•ฉ๋ฅ˜ํ•œ ๋“ฏํ•˜๋‹ค. ๊ทธ๋ž˜๋„ ์—ฌ์ „ํžˆ ์–ด๋”˜๊ฐ€์—์„œ ์ˆจ์‰ฌ๋Š” ie ๊ตฌ๋ฒ„์ „ ๋ธŒ๋ผ์šฐ์ € ...)

์•„๋ฌดํŠผ ์ด๋•Œ ์ •๋ฆฌ๋˜์ง€ ์•Š์€ ํ‘œ์ค€ ๋•๋ถ„์— ์Šคํฌ๋ฆฝํŠธ ์ž‘์—…์‹œ ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ง•์ด๋ผํ•˜์—ฌ ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์— ๋งž๊ฒŒ ์ž‘์—…์„ ํ•ด์ฃผ๋Š” ์•„์ฃผ์•„์ฃผ ๋ฒˆ๊ฑฐ๋กญ๊ฒŒ ์งœ์ฆ๋‚˜๊ณ  ๊ฐœ๋ฐœ์ ์ด์ง€ ๋ชปํ•œ ์ผ์„ ํ•ด์•ผ ํ–ˆ๋‹ค. ์–ธ์ œ๋‚˜ ๊ทธ๋ ‡๋“ฏ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์„ ๊ตฌ์ž๊ฐ€ ๋“ฑ์žฅํ•˜๊ฒŒ ๋œ๋‹ค.

๊ณต๋Œ€๊ฐ์„ฑ ๋ฌผ์”ฌํ•œ ์ œ์ด์ฟผ๋ฆฌ ์ฐฝ์‹œ์ž ๊ฐ“ ๋ ˆ์‹ ํ˜•๋‹˜...

์ด๋•Œ ํ˜œ์„ฑ๊ฐ™์ด ๋“ฑ์žฅํ•œ ๋…€์„์ด ์ œ์ด์ฟผ๋ฆฌ๋‹ค. ์ œ์ด์ฟผ๋ฆฌ ์•ˆ์— ์ฝ”๋“œ๋ฅผ ๊นŒ๋ณด๋ฉด ๋‚ด๋ถ€์—์„œ ๋ธŒ๋ผ์šฐ์ €์— ๋งž๊ฒŒ ์•Œ์•„์„œ ๋Œ€์‘์„ ํ•ด์ค€๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ๋‚ด๋ถ€ ๋™์ž‘์— ๊ตณ์ด ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ๋‹จ์ง€ ์ œ์ด์ฟผ๋ฆฌ API๊ฐ€ ์ •์˜๋œ ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜์—ˆ๋‹ค.
์ด๋Š” ๊ณณ ์ž‘์—… ์ƒ์‚ฐ์„ฑ์— ์ง€๋Œ€ํ•œ ํšจ์œจ์„ ๊ฐ€์ง€๊ณ  ์™”๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๋ฌด๋ฃŒ ์˜คํ”ˆ์†Œ์Šค์ด๊ธฐ์— ์—„์ฒญ๋‚œ ํŒŒ์žฅ์„ ์ผ์œผ์ผฐ๋‹ค. ๊ฑฐ์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ณง ์ œ์ด์ฟผ๋ฆฌ์ธ ์„ธ์ƒ์ด์—ˆ๋‹ค.

์žก์Šค๊ฐ€ ๊ฐ€์ ธ์˜จ ๋ณ€ํ™”

์Šค๋งˆํŠธํฐ์ด ์„ธ์ƒ์— ๋“ฑ์žฅํ•˜๋ฉด์„œ ์›น ์‹œ์žฅ์€ ํฐ ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚ฌ๋‹ค. ์†๋ฐ”๋‹ฅ๋งŒํ•œ ์ปดํ“จํ„ฐ๋ฅผ ๋ˆ„๊ตฌ๋‚˜ ๊ฐ€์ง€๊ณ  ๋‹ค๋‹ˆ๋Š” ์‹œ๋Œ€๊ฐ€ ์—ด๋ ธ๋‹ค. ์†Œ๋น„์ž๊ฐ€ ๋ชฐ๋ฆฌ๋‹ˆ ์ปจํ…์ธ ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๋‹น์—ฐํžˆ ์‹œ์žฅ์ด ๋ณ€ํ™”ํ–ˆ๋‹ค. 3N ๊ฒŒ์ž„ ์—…๊ณ„๋Š” PC๊ฒŒ์ž„ ํˆฌ์ž๋ฅผ ์ค„์ด๊ณ  ๋ชจ๋ฐ”์ผ์— ํˆฌ์ž ๋น„์ค‘์„ ๋Š˜๋ฆฌ๊ธฐ ์‹œ์ž‘์„ ์ •๋„๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ, IOS ์™€ ๊ฐ™์€ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋“ฑ์žฅํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ์›น ์—ญ์‹œ ๊ณผ๊ฑฐ ์›น ๊ตฌ์กฐ์—์„œ ๋ฐ˜์‘ํ˜•์œผ๋กœ ์›น์•ฑ ํŠธ๋ Œ๋“œ ๋ณ€ํ™”ํ–ˆ๋‹ค.

์ด๋•Œ ํŽ˜์ด์Šค๋ถ์€ ํ•œ๊ฐ€์ง€ ๊ณ ๋ฏผ์ด ์žˆ์—ˆ๋‹ค. ๋‹ค๋“ค ์•Œ๋‹ค์‹œํ”ผ ํŽ˜์ด์Šค๋ถ์€ ํ”ผ๋“œํ˜•์ด๋ฉด์„œ ๊ณ„์†ํ•ด์„œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€ํ™”ํ•œ๋‹ค. ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์ง€๋‚  ์ˆ˜๋ก ๋”์šฑ ๋‹ค์–‘ํ•œ ์ด๋ฒคํŠธ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๊ณ  ์ด๋Š” ๊ณณ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ณต์žก์„ฑ์„ ๋งŒ๋“ค์–ด ๋ƒˆ๊ณ  ์œ ์ง€๋ณด์ˆ˜์˜ ์–ด๋ ค์›€์œผ๋กœ ์—ฐ๊ฒฐ๋˜์—ˆ๋‹ค.

์ด๋•Œ ๊ณ ์•ˆํ•ด ๋‚ธ ๊ฒƒ์ด SPA(Sigle Page Application), ์ฆ‰ ReactJS์ด๋‹ค. (๋ฌผ๋ก  ์ด์ „์— Ember, Backbone, AngularJS ์™€ ๊ฐ™์€ ๋…€์„์ด ๋จผ์ € ๋‚˜์™”๊ณ  react๋Š” Virtual DOM์ด๋ผ๋Š” ์ปจ์…‰์„ ๋„์ž…ํ•ด SPA์˜ ๋งŽ์€ ๋‹จ์ ์„ ์ปค๋ฒ„ํ–ˆ๊ธฐ์— ํฐ ์ธ๊ธฐ๋ฅผ ๋Œ๊ฒŒ ๋˜์—ˆ๋‹ค.)

์ด๋•Œ๋ถ€ํ„ฐ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์˜ ์˜์—ญ์ด ์ปค์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. react๊ฐ€ ๋“ฑ์žฅํ•˜๋ฉฐ ์ธ๊ธฐ๋ฅผ ๋Œ์ž. ๊ธฐ์กด์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ• ๋˜ํ•œ ๋ถˆํŽธํ•จ์„ ๊ฐœ์„ ํ•˜๊ณ ์ž ํฐ ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚œ๋‹ค.

๋ชจ๋˜ํ•จ๊ณผ ๋ฉ€์–ด์ง„ ์ œ์ด์ฟผ๋ฆฌ

"์ด๋Ÿฐ ๋ง ํ•˜๋Š”๊ฒŒ ์Šฌํ”„์ง€๋งŒ jQuery๊ฐ€ javascript๋ฅผ ๋Œ€์ฒดํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. jQuery๊ฐ€ ์„ฑ๊ณตํ•œ ๊ฒƒ์€ DOM์ด ๋ฌธ์ œ๊ฐ€ ๋งŽ๋‹ค๋Š” ์ฆ๊ฑฐ์ผ ๋ฟ์ด๋‹ค."_์กด ๋ ˆ์‹

์œ„์—์„œ ์ œ์ด์ฟผ๋ฆฌ๋Š” ํฌ๋กœ์Šค๋ธŒ๋ผ์šฐ์ง•์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ํ•ด์ค€๋‹ค๊ณ  ํ–ˆ๋‹ค. ์ด๋Š” ๊ณณ ๋ฐ”๊ฟ”๋งํ•˜๋ฉด ์‚ฌ์šฉํ•  ๋•Œ ๋ณด์ด์ง€ ์•Š๋Š” ์ œ์ด์ฟผ๋ฆฌ ์ฝ”์–ด์—์„œ๋Š” ๊ฐ๊ฐ ๋ธŒ๋ผ์šฐ์ € ๋งž๊ฒŒ ๋Œ€์‘์„ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๋ณด๋Š” API ์ฝ”๋“œ์—๋Š” ๋ณด์ด์ง€ ์•Š๊ฒ ์ง€๋งŒ ๋‚ด๋ถ€์ ์œผ๋กœ ์—„์ฒญ ๋ฐ”์˜๊ฒŒ ์ผ์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์ด๋Š” ๊ณณ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์ผํ‚จ๋‹ค. ๊ธฐ๋Šฅ์ด ๋ณต์žกํ•  ์ˆ˜๋ก ๋”๋”์šฑ ๊ทธ๋Ÿด ๊ฒƒ์ด๋‹ค. (์‚ฌ์‹ค ์ฒด๊ฐ์„ ํ•  ์ •๋„์˜ ์†๋„๋Š” ์•„๋‹ˆ๋‹ค ํ•˜์ง€๋งŒ ์ตœ์ ํ™” ์ฝ”๋“œ๋ฅผ ์งœ๋Š”๊ฒŒ ๋ฏธ๋•์ธ ๊ฐœ๋ฐœ์ž ์‹œ๊ฐ์—์„œ๋Š” ์ข‹์€ ์ผ์€ ์•„๋‹ˆ๋ผ๊ณ  ๋ณธ๋‹ค.)

๊ณผ๊ฑฐ์—๋Š” ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ง•์ด๋ผ๋Š” ์งœ์ฆ๋‚˜๋Š” ์ž‘์—…์ด ๋” ์ปธ๊ธฐ์— ์ œ์ด์ฟผ๋ฆฌ๋ฅผ ํšจ์œจ์ ์ด์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด์ œ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋Œ€๋ถ€๋ถ„ ๋…์ž๋…ธ์„ ์„ ํฌ๊ธฐํ•˜๊ณ  ๋Œ€ํ†ตํ•ฉ์˜ ์‹œ๋Œ€๋ฅผ ์—ด๊ณ  ์žˆ๊ธฐ์— ๊ตณ์ด ์ œ์ด์ฟผ๋ฆฌ๋ฅผ ์จ์•ผํ•  ์ด์œ ๊ฐ€ ์‚ฌ๋ผ์ง€๊ณ  ์žˆ๋Š” ์ถ”์„ธ์ด๋‹ค.

์ œ์ด์ฟผ๋ฆฌ๋ฅผ ์“ฐ๋Š” ๋˜ ํ•œ๊ฐ€์ง€ ์ด์œ ๋Š” DOM API ๊ฐ€ ๋ณต์žกํ•˜๊ณ  ์ง๊ด€์ ์ด์ง€ ๋ชปํ•œ ๋ถ€๋ถ„์ด์—ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋น„๋™๊ธฐ ํ†ต์‹ ์„ ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ํ•˜์ง€๋งŒ

function XMLHttp() {
  let req = new XMLHttpRequest(); // XMLHttpRequest ๊ฐ์ฒด
  req.onreadystatechange = function () {
    // ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ–ˆ์„๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ
    if (this.status == 200) {
      // ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜
      document.getElementById("text").innerHTML = req.responseText;
    }
  };
  // GET ์š”์ฒญ ์ž‘์„ฑ
  req.open("GET", "/test/example.txt", true);
  // ์š”์ฒญ ์ „์†ก
  req.send();
}

์ œ์ด์ฟผ๋ฆฌ๋กœ ํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ์‰ฝ๊ณ  ์ง๊ด€์ ์ด๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

$.ajax({
  url: "https://test.com/example.txt",
  type: "GET",
  data: {
    // ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ
  },
  done: function (response) {
    // ์„ฑ๊ณต ์‹œ ๋™์ž‘
  },
  fail: function (error) {
    // ์‹คํŒจ ์‹œ ๋™์ž‘
  },
});

ํ•˜์ง€๋งŒ SPA ์‹œ์žฅ์ด ์ปค์ง๊ณผ ํ•จ๊ป˜ ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋“ฑ์žฅํ–ˆ๋‹ค. ๊ตณ์ด ๊ธฐ๋Šฅ์„ ๋‹ค์“ฐ์ง€๋„ ์•Š๋Š” ์ œ์ด์ฟผ๋ฆฌ๋ฅผ ํ†ต์œผ๋กœ ๋ฐ›์„ ํ•„์š” ์—†๋‹ค. DOM API ๋ฅผ ์“ธ ๋•Œ ๋ถ€์กฑํ•œ ๋ถ€๋ถ„๋งŒ ์„ ํƒํ•ด์„œ ์“ฐ๋ฉด ๋œ๋‹ค. ์•„๋ž˜๋Š” ๋น„๋™๊ธฐ ํ†ต์‹ ์— ์ž์ฃผ ์“ฐ์ด๋Š” ์—‘์‹œ์˜ค์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค.

import axios from 'axios'

axios.get('<https://test.com/example.txt>').then(response => {
  console.log(response)
})

์ œ์ด์ฟผ๋ฆฌ ๋ชป์ง€ ์•Š๊ฒŒ ์ง๊ด€์ ์ด๊ณ  ํŽธ๋ฆฌํ•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋” ๊ฐ€๋ณ๋‹ค.

๊ธฐํƒ€ ๋“ฑ๋“ฑ...

๋ชจ๋˜์›น์€ ๋งŽ์€ ๋ฐ์ดํ„ฐ์˜ ํšจ์œจ์ ย ์ฒ˜๋ฆฌํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ปดํฌ๋„ŒํŠธ๋ผ๋Š” ๊ฐœ๋…์„ ๋„์ž…ํ•ด ์žฌ์‚ฌ์šฉ์„ฑ์œผ๋กœ ์ธํ•œ ์œ ์ง€๋ณด์ˆ˜์„ฑ ์ฆ๋Œ€๋ฅผ ์ถ”๊ตฌํ•œ๋‹ค. ์ด๋Ÿฐ ํŠธ๋ Œ๋“œ์—ย ์ œ์ด์ฟผ๋ฆฌ๋Š” ๋ถ€ํ•ฉํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

์ด๋Ÿฐ ๋ฐฐ๊ฒฝ ๋•Œ๋ฌธ์— SPA๊ฐ€ ์ฃผ์ถ•์ธ FD ์ƒํƒœ๊ณ„์—์„œ ์ œ์ด์ฟผ๋ฆฌ์˜ ์กด์žฌ๊ฐ์ด ์ ์  ์‚ฌ๋ผ์ง€๊ฒŒ ๋˜์—ˆ๊ณ  ๋กœ๋“œ๋งต์—์„œ๋„ ๋น ์ง€๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ ์“ฐ์ง€๋ง๋ผ๊ณ ?

์ƒํ™ฉ๊ณผ ์—ฌ๊ฑด์ด ๋œ๋‹ค๋ฉด ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์–ธ์–ด๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋„๊ตฌ์ด๊ณ  ๊ทธ๋ƒฅ ์ƒํ™ฉ์— ๋งž๊ฒŒ ํŒ๋‹จํ•ด ์“ฐ๋ฉด ๋œ๋‹ค๊ณ  ๋ณธ๋‹ค. ์ œ์ด์ฟผ๋ฆฌ๋ฅผ ์“ด๋‹ค๊ณ  ๋„ˆ๋ฌด ์ฃ„์ง“๋Š” ๋งˆ์Œ์„ ๊ฐ€์งˆ ํ•„์š”๋Š” ์—†๋‹ค.
ํ˜„์‹ค์ ์œผ๋กœ ๋ฌด๋ฆฌํ•œ ์ผ์ • ์†์— ์ œ์ด์ฟผ๋ฆฌ๋กœ ๋œ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ์ž‘์—…ํ•˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ๋ง์ด๋‹ค.

์ตœ์‹  ๊ธฐ์ˆ ์„ ๋‹ค๋ค„์•ผ๋งŒ ์ข‹์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๋Š”๊ฑด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋ฌด์–ธ๊ฐ€๋ฅผ ๋งŒ๋“ค๋•Œ ํŒ€์ด ์ •ํ•œ ๊ธฐ์ˆ ์Šคํƒ, ๊ตฌ์ถ•์‹œ๊ฐ„, ํด๋ผ์ด์–ธํŠธ ๋‹ˆ์ฆˆ ๋“ฑ์„ ๊ณ ๋ คํ•ด ๊ฐ€์žฅ ์ตœ์„ ์˜ ์„ ํƒ์„ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•จ๊ป˜ ์ผํ•˜๋Š” ์ž…์žฅ์—์„œ ์ข‹์€ ๊ฐœ๋ฐœ์ž๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

FD ๋กœ๋“œ๋งต์— ์ œ์ด์ฟผ๋ผ ๋น ์ง„ ๊ฑด SPA ์„ ๋‹ค๋ฃจ๋Š” FD๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๊ธฐ์— react ๋‚˜ vue ๋งŒ ๋‹ค๋ฃฐ๊ฑฐ๋ฉด ์ œ์ด์ฟผ๋ฆฌ๋ฅผ ๊ตณ์ด ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๋ง์ด๋ผ๊ณ  ๋ณธ๋‹ค.

์‰ฌ์šด๊ฒŒ ์ข‹์€๊ฑฐ ์•„๋‹Œ๊ฐ€?

์ œ์ด์ฟผ๋ฆฌ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๋‹จ์ ์€ ์‚ฌ์šฉํ•˜๊ธฐ ๋„ˆ๋ฌด ์‰ฝ๋‹ค๋Š”๋ฐ ์žˆ๋‹ค.

์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๋‹ค๋Š” ๊ฑด ์ข‹์€ ์ผ์ด๋‹ค. ํ•˜์ง€๋งŒ ์‰ฌ์šธ ์ˆ˜๋ก ๋‚ด๋ถ€ ๋™์ž‘์„ ๋ฌด์‹œํ•˜๊ณ  ๋Œ€์ถฉ๋Œ€์ถฉ ์“ฐ๊ฒŒ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ์›๋ž˜ ์˜๋„์™€ ๋‹ค๋ฅด๊ฒŒ ๋ฉ”์„œ๋“œ๋“ค์„ ๋‚จ๋ฐœํ•˜๊ฒŒ ๋˜๊ฑฐ๋‚˜ ๊ฐ€๋ณ๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฑธ ๋ถˆํ•„์š” ํ•˜๊ฒŒ ๋ฌด๊ฒ๊ฒŒ ์“ฐ๊ฒŒ ๋œ๋‹ค.

๊ฐ„๋‹จํ•˜๊ณ  ๋นจ๋ฆฌ ๊ฐœ๋ฐœํ•ด์•ผํ•œ๋‹ค๋ฉด ์ƒ๊ด€์—†๊ฒ ์ง€๋งŒ ๋งŒ์•ฝ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ ์–ดํ”Œ์ด๊ณ  ํ”„๋ก ํŠธ์—์„œ ์ฒ˜๋ฆฌํ• ๊ฒŒ ๋งŽ๋‹ค๋ฉด ์ œ์ด์ฟผ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ํ•จ๋ถ€๋กœ ์ผ๋‹ค๊ฐ„ ์‚ฌ์šฉ์ž๊ฐ€ ์ฒด๊ฐ์ด ๋ ์ •๋„์˜ ๋ฒ„๋ฒ…์ž„์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์žˆ๋‹ค...

๊ทธ๋ฆฌ๊ณ  ์ œ์ด์ฟผ๋ฆฌ ์ฝ”๋“œ๋ฅผ ๊ฐ–๋‹ค๊ฐ€ ์“ฐ๋Š” ์ˆ˜์ค€์— ๋จธ๋ฌผ๊ฒŒ ๋  ๊บผ๊ณ  ์‘์šฉํ•˜์ง€ ๋ชปํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

๋—
ref)


kamranahmedse/developer-roadmap

jQuery ๋ณด๋‹ค ๋จผ์ € ์•Œ์•˜์œผ๋ฉด ์ข‹์•˜์„ ๊ฒƒ๋“ค

์ด์ œ์™€์„œ jQuery๋ฅผ ์“ฐ๋ฉด ์•ˆ๋˜๋Š” ์ด์œ , ํ˜น์€ jQuery์™€ ์›น๊ฐœ๋ฐœ์˜ ์—ญ์‚ฌ - Tokyo Branch

profile
๊ธฐ๋ก

6๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2021๋…„ 6์›” 5์ผ

์ข‹์€ ๊ธ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋•๋ถ„์— jQuery๊ฐ€ ๋ฐ€๋ ค๋‚œ ์ด์œ ๋ฅผ ์–ด๋ ดํ’‹ํ•˜๊ฒŒ ๋‚˜๋งˆ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ๊ด€๋ฆฌ... ํž˜๋“ค์ฃ .

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2021๋…„ 6์›” 9์ผ

jQuery๋Š” ์“ฐ๊ธฐ๋Š” ์‰ฝ์ง€๋งŒ, ์ œ๋Œ€๋กœ ์“ฐ๊ธด ์‰ฝ์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. jQuery๊ฐ์ฒด๊ฐ€ ๋ญ˜ ๋ฆฌํ„ดํ•˜๋Š”์ง€ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ๋„ ๊ฝค ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2021๋…„ 6์›” 10์ผ

jQuery๊ฐ€ ์‚ฌ์šฉ์ด ์‰ฌ์šด ๊ฒƒ์— ๋น„ํ•ด ๋‹ค๋ฃจ๋Š” ๋ถ„๋“ค์˜ ๋‚ด์‹ค์ด ๋ถ€์กฑํ•œ ๊ฒƒ๋„ ์žˆ์ฃ . ๊ฐ€๋ น ์ œ์ด์ฟผ๋ฆฌ๋Š” ์ž์ฒด์ ์œผ๋กœ ๊ฐ€์ƒ ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋˜์ง€... ์ด๋Ÿฐ๊ฑฐ ์ž˜ ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์€ document.getElementById~ ๋“ฑ๋“ฑ์˜ ํ•จ์ˆ˜๋ฅผ ์ถ•์•ฝํ•ด์„œ ๋” ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์“ฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ฃ . ๊ฒฐ๊ตญ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋งŒ ๋ฐฐ์šฐ๋ฉด ๋ฐ”๋‹๋ผ๋กœ ์‰ฝ๊ฒŒ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋“ค์ด ์˜คํžˆ๋ ค ์ œ์ด์ฟผ๋ฆฌ๋กœ ์ž‘์„ฑ๋˜๋Š” ์•„์ด๋Ÿฌ๋‹ˆํ•œ ์ƒํ™ฉ์ด ํŽผ์ณ์ง‘๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ฒˆ๋“ค ์šฉ๋Ÿ‰์€ ๊ฝค ํฐ ํŽธ์ด๋ฉฐ, ์ด๋ฒคํŠธ๊ฐ€ ๋–ก์น ๋˜๋Š” ๊ฐœ๋ฐœ ๋ฐฉ์‹ ๋•Œ๋ฌธ์— ๋ถˆํŽธํ•˜๊ณ  ๋ฌด๊ฒ์ฃ .

๋ฌผ๋ก  ๊ทธ๋Ÿฐ๊ฑฐ ๋‹ค ๋– ๋‚˜์„œ ์ œ์ด์ฟผ๋ฆฌ๋Š” ์ด์ œ ์“ฐ๋ฉด ์•ˆ๋œ๋‹ค๊ณ  ์กฐ๊ธˆ์€ ๊ทน๋‹จ์ ์ด๊ฒŒ ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์†”์งํžˆ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค๊ณ  ํ•˜๋ฉด vue-cli๋„ ์žˆ๊ณ , CRA๋„ ์žˆ๋Š”๋ฐ ๊ตณ์ด ์ œ์ด์ฟผ๋ฆฌ๋ฅผ...? ์•„๋‹ˆ๋ผ๊ณ  ๋ด…๋‹ˆ๋‹ค. ์ œ์ด์ฟผ๋ฆฌ๋Š” ๊ธฐ์ˆ  ์Šคํƒ์ด ๋‹ค์†Œ ์˜ค๋ž˜๋œ ์„œ๋น„์Šค๋‚˜ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ์ ์šฉํ•˜๊ธฐ์— ์—ฌ๊ฑด์ด ์•ˆ๋˜๋Š” ์ƒํ™ฉ์—์„œ ๋น„๊ต์  ์ž์œ ๋กญ๊ฒŒ ๋ถˆ๋Ÿฌ์™€์„œ ์“ธ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋งŒํผ ๋Œ€๋ถ€๋ถ„ ์ด๋Ÿฐ ์ผ€์ด์Šค๋“ค์€ ๋ ˆ๊ฑฐ์‹œ ์•ฑ์˜ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์ฃ . ์‹ ๊ทœ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ์— ์ดˆ์ ์„ ๋‘๊ณ  ๋ณธ๋‹ค๋ฉด ์•„๋ฌด๋ฆฌ ๊ฐ„๋‹จํ•œ ์›น์ด๋ผ๊ณ  ํ•ด๋„ jQuery๋กœ ์ผ์ผํžˆ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋งํ•˜๊ณ  ์ง์ ‘์ ์œผ๋กœ ๋” ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์กฐ์ž‘ํ•˜๊ณ  ๊ทธ๋Ÿฌ๋Š” ๊ฒŒ ๋” ์–ด๋ ต๊ณ  ๋ณต์žกํ•œ ์ผ์ด ์•„๋‹๊นŒ ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ชฉ์ ์ด๋ผ๋ฉด SPA๊ฐ€ ํ›จ์”ฌ ์‰ฝ๊ณ  ๋น ๋ฅด์ฃ . ๋ฌด์—‡๋ณด๋‹ค ๋ณธ๋ฌธ์—์„œ ์–ธ๊ธ‰๋˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด CDN์œผ๋กœ ๋ถˆ๋Ÿฌ์™€ ์“ฐ๋Š” ๊ฐœ๋ฐœ๋ณด๋‹ค npm์œผ๋กœ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋“ค๋งŒ ํŠน์ •ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๊ฐ€๋ฒผ์šด ๊ฐœ๋ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค... ํŽธ๋ฆฌํ•˜๊ตฌ์š”.

์‚ฌ๋‹ด์ด์ง€๋งŒ ์‚ฌ๋‚ด ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ 10๋…„์ฐจ PHP ๊ฐœ๋ฐœ์ž ๋ถ„๊ป˜์„œ jQuery๋กœ SPA๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฑธ ๋ณด๊ณ  ๋†€๋ž์Šต๋‹ˆ๋‹ค. React์—์„œ ์ƒํƒœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ๋„ ๋จธ๋ฆฌ ์•„ํ”ˆ๋ฐ ์ € ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋–ก์น ๋œ ์ € ์ˆ˜๋งŽ์€ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋“ค... ์•„ํ‘... ์ข€ ๋ฌด์„œ์› ์Šต๋‹ˆ๋‹ค. ์ผ๋‹จ ๊ทธ ์ฝ”๋“œ๋Š” ์ ˆ๋Œ€๋กœ ๊ฑด๋“œ๋ฆฌ๊ณ  ์‹ถ์ง€ ์•Š์•˜์ฃ . ์‹œ๋Œ€๊ฐ€ ๋ณ€ํ•˜๋Š” ๋งŒํผ ์ฃผ๋ณ€์˜ ํ•จ๊ป˜ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค๊ณผ ์‰ฝ๊ฒŒ ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ํˆด์„ ๊ณ ๋ฅด๋Š” ๊ฒƒ ๋˜ํ•œ ์ค‘์š”ํ•˜๋‹ค๋Š” ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

1๊ฐœ์˜ ๋‹ต๊ธ€