์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.


๊ณต์‹ ์‚ฌ์ดํŠธ
jQuery UI
jQuery Mobile
1. ๊ฐœ์š”2. ํŠน์ง•3. ์—ฌ๋‹ด

write less, do more.

1. ๊ฐœ์š”[ํŽธ์ง‘]

jQuery๋Š” HTML ์† ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋„๋ก ์„ค๊ณ„๋œ ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ์ด ์žˆ๋Š” JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ์กด ๋ ˆ์‹์— ์˜ํ•ด 2006๋…„ ๋‰ด์š• ์‹œ ๋ฐ”์บ ํ”„(Barcamp NYC)์—์„œ ๊ณต์‹์ ์œผ๋กœ ์†Œ๊ฐœ๋˜์—ˆ๋‹ค.

2. ํŠน์ง•[ํŽธ์ง‘]

๊ธฐ๋Šฅ์ ์œผ๋กœ์•ผ ๋” ์ข‹์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๋„ ๋งŽ์ง€๋งŒ, jQuery๊ฐ€ ์ˆœ์‹๊ฐ„์— ์—…๊ณ„๋ฅผ ์žฅ์•…ํ•œ ํŠน์žฅ์ ์€ ๋ฐ”๋กœ ๋ฌด์ง€ํ•˜๊ฒŒ ์‰ฝ๊ณ  ๊ฐ„ํŽธํ•˜๋‹ค๋Š” ์ ์ด๋‹ค. 'write less, do more.'๊ฐ€ ๋ชจํ† ๋กœ์„œ ๋น„ํ”„๋กœ๊ทธ๋ž˜๋จธ์ธ ์›น๋””์ž์ด๋„ˆ๋“ค๋„ ์–ด๋ ต์ง€ ์•Š๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ์‰ฌ์šด ํŽธ์ด๋‹ค. DOM ๊ตฌ์กฐ์™€ CSS์— ๋Œ€ํ•œ ์ง€์‹๋งŒ ์žˆ๋‹ค๋ฉด ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ฐ™์€ ๊ฑด ๋ฐ”๋กœ ์ดํ•ด๊ฐ€ ๊ฐ€๋Šฅํ•  ์ •๋„๋‹ค. ์‹ค์ œ๋กœ ์ €์ž์ธ ์กด ๋ ˆ์‹์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์˜ ์นญ์ฐฌ๋ณด๋‹ค ์ˆœ์ˆ˜ ์›น๋””์ž์ด๋„ˆ๋“ค์˜ ๊ฐ์‚ฌ ์ธ์‚ฌ๊ฐ€ ๋” ํŠน๋ณ„ํ•œ ๊ธฐ์จ์ด๋ผ๊ณ  ํ•œ๋‹ค.

jQuery๋Š” Behavioral model(ํ–‰๋™ ๋ชจ๋ธ)์— ๊ธฐ์ดˆํ•œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋”ฐ๋ฅธ๋‹ค. ํŠนํžˆ jQuery๋Š” ๋ฉ”์„œ๋“œ ์ฒด์ด๋‹์„ ํ†ตํ•ด DOM ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์กฐ์ž‘ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ธฐ์กด์— ์ด๋ ‡๊ฒŒ ํ–ˆ๋‹ค๋ฉด,
const textNode = document.querySelector("#textNode");
textNode.style.color = "red";
document.querySelector("#someDiv").appendChild(textNode);

jQuery์—์„  ์ด๋ ‡๊ฒŒ ํ•œ๋‹ค. ๋Œ€์‹ ์— ์†๋„๊ฐ€ ์ข€ ๋” ๋А๋ฆฌ๋‹ค.
$("#textNode").css("color","red").appendTo("#someDiv");
  • $("#textNode")
    $๋ผ๋Š” ํ•จ์ˆ˜์— ์ธ์ž๋กœ "#textNode"[1]๋ฅผ ๋„˜๊ฒจ์ฃผ๊ฒ ๋‹ค๋Š” JavaScript ๊ตฌ๋ฌธ์ด๋‹ค. jQuery๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ $๋ฅผ ํ•จ์ˆ˜ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.[2] $() ํ•จ์ˆ˜์— ์ธ์ž๋กœ DOM selector๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ํ•ด๋‹นํ•˜๋Š” DOM ์š”์†Œ๋ฅผ ์ฐพ์•„ ๋ฆฌํ„ดํ•ด์ค€๋‹ค. (์ •ํ™•ํžˆ๋Š” DOM์š”์†Œ๋ฅผ 0๋ฒˆ์งธ๋กœ ๊ฐ€์ง„ ํŠน์ •ํ•œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ, id๋Š” ํŠน์ •ํ•œ ์ƒํ™ฉ์ด ์•„๋‹ˆ๋ผ๋ฉด ๋ฌด๋ฆฌ ์—†์ด ์“ธ ์ˆ˜ ์žˆ์ง€๋งŒ ์—ฌ๋Ÿฌ ๊ฐœ์˜ class๋ฅผ ํ•œ ๋ฒˆ์— ์…€๋ ‰ํŒ… ํ•  ๊ฒฝ์šฐ javascript์˜ document.getElementsByClassName()๋ฅผ ์ƒ๊ฐ ์—†์ด ์“ธ ๋•Œ์™€ ๊ฐ™์€ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค.)
  • $("...").css("color","red") / $("...").css({"color":"red"})
    jQuery์˜ ๋ฉ”์†Œ๋“œ๋“ค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฆฌํ„ดํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ž๋ฃŒํ˜•์ด jQuery์ด๊ณ , ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ž๋ฃŒํ˜•์ด jQuery์ธ ๊ฐ’์— ๋ถ™์—ฌ์„œ ํ˜ธ์ถœํ•˜๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ๋‹ค. ์ฆ‰, $("...")๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ฐพ๊ณ ์ž ํ•˜๋Š” DOM ์š”์†Œ๋ฅผ(์—ฌ๊ธฐ์„œ๋Š” id๊ฐ€ textNode์ธ ์š”์†Œ) jQueryํ˜•์œผ๋กœ ๋ฆฌํ„ด๋ฐ›๊ณ  .css() ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ. ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์„ ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ .css("color","red") ๋ฉ”์†Œ๋“œ๋Š” ๋Œ€์ƒ์˜ css๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค[3]. ๊ทธ๋ฆฌ๊ณ  ๋ณ€๊ฒฝํ•œ DOM ์š”์†Œ๋ฅผ jQueryํ˜•์œผ๋กœ ๋ฆฌํ„ดํ•œ๋‹ค. ํ›„์ž์˜ ๊ฒฝ์šฐ๋Š” JSON ๋ฌธ๋ฒ•์œผ๋กœ ์—ฌ๋Ÿฌ ์†์„ฑ์„ ํ•œ๊บผ๋ฒˆ์— ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • $("...").css("...","...").appendTo("#someDiv") / $("...").css({"...":"..."...}).appendTo("#someDiv")
    ์•ž์„œ .css() ๋ฉ”์†Œ๋“œ๋กœ ์ƒ‰์„ ๋ฐ”๊พธ๊ณ  ๋ฆฌํ„ดํ•œ ์š”์†Œ์— .appendTo() ๋ฉ”์†Œ๋“œ๋ฅผ ์ ์šฉํ•˜๋Š” ๊ตฌ๋ฌธ์ด๋‹ค. ์ด๊ฒŒ ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” ํ”Œ๋ฃจ์–ธํŠธ(Fluent) ์ธํ„ฐํŽ˜์ด์Šค ๋•Œ๋ฌธ์ด๋‹ค. ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜๊ฐ’์ด ์ž๊ธฐ ์ž์‹ ์˜ ์ฐธ์กฐ๊ฐ€ ๋˜์–ด ๋ฌดํ•œํžˆ ๋ฉ”์„œ๋“œ๋ฅผ ์ด์–ด๋ถ™์ผ ์ˆ˜ ์žˆ๋Š” ๊ฒŒ ํŠน์ง•.

jQuery๋Š” MIT ํ—ˆ๊ฐ€์„œ์™€ GPL v2์˜ ๋“€์–ผ ๋ผ์ด์„ ์Šค๋ฅผ ๊ฐ€์ง„ ์ž์œ  ์†Œํ”„ํŠธ์›จ์–ด์ด๋‹ค. jQuery์˜ ๋ฌธ๋ฒ•์€ ์ฝ”๋“œ ๋ณด๊ธฐ, ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ ์ฐพ๊ธฐ, ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋งŒ๋“ค๊ธฐ, ์ด๋ฒคํŠธ ์ œ์–ด, AJAX ๊ฐœ๋ฐœ์ด ์‰ฝ๋„๋ก ๋””์ž์ธ ๋˜์—ˆ๋‹ค. ๋˜ํ•œ, jQuery๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ๋•๋ถ„์— ์ˆ˜๋งŽ์€ jQuery ํ”Œ๋Ÿฌ๊ทธ์ธ๋“ค์ด ๊ฐœ๋ฐœ๋˜์–ด ์žˆ๋‹ค!

์—ฌ๊ธฐ์ €๊ธฐ์„œ ๋งŽ์ด ์“ฐ๋‹ค ๋ณด๋‹ˆ JavaScript๋กœ ์›น ๊ฐœ๋ฐœ์„ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋‹น์—ฐํžˆ jQuery๋ฅผ ์“ด๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ชจ์–‘. ์‹ค์ œ๋กœ๋„ ๊ฒฝํ—˜์ด ๋ถ€์กฑํ•œ ๊ฐœ๋ฐœ์ž๋“ค์ด jQuery๊ฐ€ ์—†์œผ๋ฉด ๊ฐ„๋‹จํ•œ DOM ์กฐ์ž‘๋„ ์–ด๋ ค์›Œํ•œ๋‹ค.[4] jQuery๋Š” JavaScript๋ฅผ ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ง€์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด์ง€ ์ •์‹ ์–ธ์–ด๊ฐ€ ์•„๋‹ˆ๋‹ค! ์–ธ์ œ๊นŒ์ง€๋‚˜ ๊ธฐ์ดˆ๋Š” JavaScript์ž„์„ ๋ช…์‹ฌํ•˜๊ณ  ๊ธฐ์ดˆ๋ฅผ ํŠผํŠผํžˆ ํ•˜์ž. jQuery๋งŒ ์“ฐ๊ฒŒ ๋˜๋ฉด ์ด๋ ‡๊ฒŒ ๋œ๋‹ค. ๋ถ€์—ฐ์„ค๋ช…์„ ํ•˜์ž๋ฉด, JavaScript์—์„œ ๋ง์…ˆ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฌป๊ณ  ์žˆ๋Š”๋ฐ ๋Œ“๊ธ€๋“ค์€ ๋œฌ๊ธˆ์—†์ด jQuery ์‚ฌ์šฉํ•˜๋ผ๊ณ , jQuery๊ฐ€ ์ตœ๊ณ ๋ผ๊ณ  ์ฐฌ์–‘ํ•˜๋Š” ์ƒํ™ฉ์ด๊ณ  ๊ทธ๋Ÿฐ ๋Œ“๊ธ€๋“ค์— ์ถ”์ฒœ์ด ๋‹ฌ๋ ค ์žˆ๋‹ค. โ€œjQuery์š”๋ฒ•์„ ์ผ๋”๋‹ˆ 10kg๊ฐ€ ๋น ์กŒ์–ด์š”!โ€๋ผ๋Š” ๋ง๋„ ํ•˜๊ณ  ๋งจ ๋ฐ‘์˜ ์˜ฌ๋ฐ”๋ฅธ ์„ค๋ช…์„ ํ•œ ๋Œ“๊ธ€์€ jQuery ์‚ฌ์šฉ์„ ์•ˆํ–ˆ๋‹ค๊ณ  ๋น„์ถ”์ฒœ์ด ๋‹ฌ๋ ค ์žˆ๋‹ค(...). ๋ฌผ๋ก  ์‚ฌ๋žŒ๋“ค์ด ๋†€๋ ค๋จน๋Š” ๊ฒƒ์ด๊ณ , Stack Overflow ๊ทœ์ • ์ƒ ์ด๋Ÿด ์ผ์€ ์—†๋‹ค.

์—ฌ์ „ํžˆ ์›น ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ๋ง‰๊ฐ•ํ•œ ์˜ํ–ฅ๋ ฅ์„ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š” jQuery์ด์ง€๋งŒ ์ตœ๊ทผ ์›น ๊ฐœ๋ฐœ์˜ ํŠธ๋ Œ๋“œ๋Š” ๋ฆฌ์—‘ํŠธ, Vue.js, ์Šค๋ฒจํŠธ, ๊ฐ™์€ SPA์šฉ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์˜ฎ๊ฒจ๊ฐ€๊ณ  ์žˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ, MVC, ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ ๋“ฑ์˜ ๊ณ ์ˆ˜์ค€์ ์ธ ๊ฐœ๋…์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์— ๋ฐ˜ํ•ด jQuery๋Š” ์—ฌ์ „ํžˆ ๋ฐ‘๋ฐ”๋‹ฅ DOM์„ ๊ฑด๋“œ๋ฆฌ๋Š” ๋ฐ ์ง€๋‚˜์ง€ ์•Š๋Š”์ง€๋ผ...[5] ํ•˜์ง€๋งŒ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์“ฐ๋ฉด์„œ๋„ jQuery์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ •๋‹ต์€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— jQuery์— ๋Œ€ํ•œ ์ˆ˜์š”๋Š” ์•ž์œผ๋กœ๋„ ์žˆ์„ ๊ฒƒ์ด๋‹ค.[6](์ฐธ๊ณ ) SPA ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ๋‚˜์˜จ ๊ฒƒ์œผ๋กœ React๋„ ์žˆ๋Š”๋ฐ, ์ด๊ฑด ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์•„๋‹ˆ๋ผ jQuery์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ํŽ˜์ด์Šค๋ถ์—์„œ ๊ฐœ๋ฐœํ•˜์˜€์œผ๋ฉฐ jQuery๋ณด๋‹ค ์šฐ์ˆ˜ํ•œ Virtual DOM์˜ ํ™œ์šฉ ๋“ฑ์œผ๋กœ ์ˆœ์‹๊ฐ„์— ์ ์œ ์œจ์„ ํฌ๊ฒŒ ํ™•๋Œ€ํ•˜์˜€๋‹ค. ๋‹ค๋งŒ jQuery์— ๋น„ํ•ด ๋‚œ์ด๋„๊ฐ€ ์ข€ ๋” ๋†’๊ณ , JSX๋ผ๋Š” ๋ณ„๋„์˜ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด์„œ ํ•ด์„œ[7] ์ „์ฒด์ ์œผ๋กœ๋Š” ์•„์ง jQuery๊ฐ€ React๋ณด๋‹ค ๋งŽ์ด ์“ฐ์ธ๋‹ค.

๋‹ค๋งŒ ์ด๊ฒƒ์€ ๋ฐ˜์ฏค ๊ฑธ๋Ÿฌ ๋“ค์–ด์•ผ ํ•  ๊ฒƒ์ด, 2000๋…„๋Œ€ ์ค‘๋ฐ˜ ๊ฑฐ์˜ JS๊ฐ€ ๋‚˜์˜จ์ง€ 5~6๋…„ ๋‚จ์ง“ ๋œ ์›น ์ดˆ์ฐฝ๊ธฐ ์‹œ์ ˆ๋ถ€ํ„ฐ 2010๋…„๋Œ€ ์ค‘๋ฐ˜๊นŒ์ง€์˜ ๋ฌด๋ ค 10๋…„๊ฐ„ ํ™•๊ณ ํ•œ ์œ„์น˜๋ฅผ ๊ณ ์ˆ˜ํ–ˆ๋˜ ๊ด€๊ณ„๋กœ Legacy๊ฐ€ ๋งŽ์•„์„œ ๊ทธ๋Ÿฐ ๊ฒƒ์ด์ง€, ํ˜„์žฌ๋กœ์จ๋Š” ์‹ ๊ทœ ํ”„๋กœ์ ํŠธ, ์‹ ๊ทœ ์ธ๋ ฅ๋งŒ ๋†“๊ณ  ๋ณธ๋‹ค๋ฉด Angular๋„ ํ•œ ๋ฌผ ๊ฐ€๊ณ  ์žˆ๊ณ , React ๊ฐ€ ๋Œ€๋‹ค์ˆ˜์ด๊ณ  Vue.js๋„ ์ผ๋ถ€ ์žˆ๋‹ค. ์‹ญ์ค‘ํŒ”๊ตฌ React. ๋ ˆ๊ฑฐ์‹œ๊ฐ€ ๋งŽ๊ณ  ์•„์˜ˆ ์ž์ฒด ํ”„๋ ˆ์ž„์›Œํฌ/๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ง„ ๋Œ€๊ธฐ์—…์ด ์•„๋‹Œ ๋Œ€๋ถ€๋ถ„์˜ ์ค‘์†Œ๊ธฐ์—…, ์Šคํƒ€ํŠธ์—…, ์ค‘๊ฒฌ๊ธฐ์—…์˜ ์‹ ๊ทœ ์›น ํ”„๋กœ์ ํŠธ๋„ React. ์—ฌ๊ธฐ์— Vue.js๊ฐ€ ๊ผฝ์‚ฌ๋ฆฌ ๋ผ๋Š” ์ •๋„์ด๋‹ค. ์›ํ‹ฐ๋“œ ๋˜๋Š” ๋กœ์ผ“ํŽ€์น˜์˜ ์ฑ„์šฉ๊ณต๊ณ ๋‚˜, ์˜คํ‚ค ๋“ฑ์˜ ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ๋“ฑ์„ ์ฐพ์•„๋ณด๋ฉด ์‹ ๊ทœ ํ”„๋กœ์ ํŠธ, ์‹ ๊ทœ ์ธ๋ ฅ ๊ธฐ์ค€์œผ๋กœ๋Š” React : Vue.js : Angular : ๊ธฐํƒ€ == 6 : 2 : 1 : 1 ์ •๋„์˜ ๋น„์œจ์„ ๋ณด์ธ๋‹ค. ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰ ํ†ต๊ณ„๋งŒ ๋ด๋„ React๊ฐ€ ์••๋„์ ์ด๋‹ค. ๋ฆฌ์•กํŠธ ๊ด€๋ จ ๊ธฐ์ˆ ๋ฌธ์„œ, ์ž๋ฃŒ์˜ ์กฐํšŒ์ˆ˜์˜ 1/3~์ ˆ๋ฐ˜ ์ •๋„๊ฐ€ Vue.js์˜ ํ†ต๊ณ„์™€ ์œ ์‚ฌํ•˜๊ณ , Angular๋Š” 1/5์ •๋„, jQuery๋Š” 10% ์ •๋„์ด๋‹ค. ๋ฌผ๋ก , ๊ธฐ์ˆ ๋ฌธ์„œ๋‚˜ ์ž๋ฃŒ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ฐพ์•„๋ณด๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ „๋ถ€ ํ•ด๋‹น ์Šคํƒ์œผ๋กœ ๊ฐœ๋ฐœ ์ค‘์ด๋ผ๋Š” ๋ณด์žฅ์€ ์—†๊ณ , jQuery๋Š” ๋‚˜์˜จ์ง€ 15๋…„์ด๋‚˜ ๋˜์—ˆ์œผ๋‹ˆ ๊ฐœ๋ฐœ์ž๋“ค๋„ ์ถฉ๋ถ„ํžˆ ์ˆ™๋ จ๋˜๊ณ  ์ •์„ ์ˆ˜์ค€์œผ๋กœ ์‚ฌ๋‚ด ๋งค๋‰ด์–ผ, ๊ฐ์ข… ๋„์„œ ๋“ฑ์ด ์ •๋ฆฌ๊ฐ€ ๋ผ์„œ ๊ตฌ๊ธ€๋ง์˜ ๋นˆ๋„๊ฐ€ ์ค„์–ด๋“œ๋Š” ํšจ๊ณผ๋„ ์žˆ๊ณ  ๋Œ€๋ถ€๋ถ„ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋“ฑ์—์„œ ์กฐ์–ธ์„ ๊ตฌํ•ด๋„ "๋Œ€์ถฉ jQuery์ฝ”๋“œ ์ฝ์„์ค„๋งŒ ์•Œ๋ฉด ๋œ๋‹ค."''' ๋ผ๋Š” ๋ฐ˜์‘์ด ๋Œ€๋ถ€๋ถ„์ด๋‹ค.

์•„๋ฌด๋ž˜๋„ ์ง„๋ถ€ํ™” ๋ฐ ๋…ธํ›„ํ™”๋กœ jQuery๋Š” ๊ฒฐ๊ตญ ์ €๋ฌผ ์ˆ˜๋ฐ–์— ์—†๋‹ค. Legacy๊ฐ€ ์•„๋ฌด๋ฆฌ ๋งŽ๋‹ค๊ณ  ํ•ด๋„ ํ‡ด์ง ์ง์ „์˜ 40~50๋Œ€ ์‹œ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ์ด์ƒ ์‹ ์ž… ๊ฐœ๋ฐœ์ž์—๊ฒ jQuery๋Š” ๋ฏธ๋ž˜๊ฐ€ ์—†๋‹ค. ๋ญ 10๋…„ ์ •๋„๋งŒ ์ผ์ž๋ฆฌ๊ฐ€ ๋ณด์žฅ์ด ๋˜๋ฉด ๋Œ€๊ฐ• ์ผํ•˜๋‹ค๊ฐ€ 10๋…„ ๋’ค์— ์‹œํ•œ๋ถ€ ๋ฐฅ๊ทธ๋ฆ‡์ด ํ†ต์งธ๋กœ ์•„์ž‘๋‚˜๋„ ์ƒ๊ด€์—†๋Š” ์‹œ๋‹ˆ์–ด๋ผ๋ฉด ๋ชจ๋ฅด๊ฒ ์œผ๋‚˜, ์ฃผ๋‹ˆ์–ด๋ผ๋ฉด, ์œ ์ง€๋ณด์ˆ˜ํ•˜๋Š” ๊ณณ๋ณด๋‹ค๋Š” ์‹ ๊ทœ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋Š” ๊ณณ์ด ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค. ์–ด๋”” ์ž„๋ฒ ๋””๋“œ ๊ธฐ๊ธฐ๋‚˜ POS๊ธฐ, ์ „๊ด‘ํŒ ๊ฐ™์€๋ฐ ์งฑ๋ฐ•ํ˜€์„œ ๋Œ์•„๊ฐ€๋Š” ์ฝ”๋“œ๋„ ์•„๋‹ˆ๊ณ , 5๋…„์ด๋ฉด ๊ฐ•์‚ฐ์ด ๋ฐ”๋€Œ๋Š” ์›น์ด๊ธฐ์— 2020๋…„๋Œ€ ์ค‘ํ›„๋ฐ˜๋งŒ ๋˜์–ด๋„ Legacy ๋งˆ์ € ์ ์ฐจ ํ”„๋ ˆ์ž„์›Œํฌ/React/ES6 ์ดํ›„์˜ ์ตœ์‹  ํ‘œ์ค€ Native JS๋กœ ๋ถ€๋ถ„๋ถ€๋ถ„ ๋Œ€์ฒด๋˜๊ฑฐ๋‚˜ ์•„์˜ˆ ์„œ๋น„์Šค ์ข…๋ฃŒ ๋˜๋Š” ๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์žฌ๊ฐœ๋ฐœ ๋“ฑ์˜ ์ด์œ ๋กœ ์‚ฌ๋ฉธํ•  ๊ฒƒ์ด๋ผ๋Š” ์˜๊ฒฌ๋„ ์ข…์ข… ๋ณด์ธ๋‹ค. ๋‹น์žฅ ๊ทธ ๋Œ€ํ‘œ์ ์ธ ๋„ค์ด๋ฒ„ ํฌํƒˆ๋งˆ์ € ์ผ๋ฐ˜ JS์˜€๋‹ค๊ฐ€ jQuery๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค๊ฐ€ ๋„ค์ด๋ฒ„์นดํŽ˜๋“ฑ ์ผ๋ถ€ ์„œ๋น„์Šค์—์„œ Vue.js ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๋ฌผ๋ก  ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ๋ฅผ ๋ชจ๋‘ ์ƒˆ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—ฌ์•ผ ํ•˜๋ฉฐ, ๋ฐฑ์—”๋“œ๋ฅผ ๊ธฐ์กด์˜ ์˜คํ”ˆ์†Œ์Šค ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์—ฌ์ „ํžˆ jQuery๊ฐ€ ์œ ํšจํ•˜๋‹ค. ํŠนํžˆ ์•„์ง๋„ ๋งŽ์€ ์ ์œ ์œจ์„ ์ฐจ์ง€ํ•˜๋Š” ์›Œ๋“œํ”„๋ ˆ์Šค๋‚˜ ๊ทธ๋ˆ„๋ณด๋“œ, XpressEngine ๋“ฑ์€ ๋ฐฑ์—”๋“œ(์ฝ”์–ด)์—์„œ ํ”„๋ก ํŠธ์—”๋“œ(์Šคํ‚จ, ํ…Œ๋งˆ ๋“ฑ)๋กœ ๋ฟŒ๋ ค์ฃผ๋Š” ๊ฒฐ๊ณผ๋ฌผ์ด HTML์ด๋ผ React ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ธฐ์— ๊ณค๋ž€ํ•œ ์ ์ด ๋งŽ๋‹ค. ์ฝ”์–ด ์†Œ์Šค๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜[8] ํ”Œ๋Ÿฌ๊ทธ์ธ ๋“ฑ์„ ์‚ฌ์šฉํ•ด์„œ[9] ๊ฒฐ๊ณผ๋ฌผ์„ JSON ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ์˜ค๊ฐ€๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ ์ „์ž๋Š” ์‚ฌ์ดํŠธ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํฌ๊ฒŒ ์–ด๋ ค์›Œ์ง€๋Š” ๋‹จ์ ์ด ์ƒ๊ธฐ๊ณ , ํ›„์ž๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ•œ ๋‹จ๊ณ„ ๋” ๊ฑฐ์น˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ๋ถ€ํ•˜๊ฐ€ ์ปค์ง€๋Š” ๋‹จ์ ์ด ์ƒ๊ธด๋‹ค.

๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์™€ ๋…ธํ‚ค์•„๋Š” ์ž์‚ฌ ํ”Œ๋žซํผ์— jQuery๋ฅผ ํฌํ•จํ•˜๋Š” ๊ณ„ํš์„ ๋ฐœํ‘œํ•œ ๋ฐ” ์žˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ๋Š” ๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค์˜ ASP.NET AJAX ํ”„๋ ˆ์ž„์›Œํฌ์™€ ASP.NET MVC ํ”„๋ ˆ์ž„์›Œํฌ์— ์ ์šฉํ–ˆ๊ณ , ๋…ธํ‚ค์•„๋Š” ์ž์‚ฌ์˜ ๋Ÿฐํƒ€์ž„ ์›น ์œ„์ ฏ ๊ฐœ๋ฐœ ํ”Œ๋žซํผ์— ํ†ตํ•ฉํ•˜์˜€๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๊ฑธ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ, HTML5 Boilerplate๋‚˜ ํŠธ์œ„ํ„ฐ Bootstrap[10]๋„ jQuery ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค.

jQuery Mobile๋„ ์žˆ์—ˆ๋Š”๋ฐ, ๋ชจ๋ฐ”์ผ ์›นํŽ˜์ด์ง€๋‚˜ HTML5 ์›น์•ฑ ๋“ฑ์˜ ์ œ์ž‘์— ์‚ฌ์šฉํ•˜๋Š” ์›น ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ๋‹ค.[11] HTML5 ์›น์•ฑ ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์ด ๋Œ€๊ฐœ ๊ทธ๋ ‡๋“ฏ iOS, ์•ˆ๋“œ๋กœ์ด๋“œ๋Š” ๋‹น์—ฐํžˆ ์ง€์›ํ•˜๊ณ , Windows Phone, ๋ธ”๋ž™๋ฒ ๋ฆฌ, ์‹ฌ๋น„์•ˆ ๋“ฑ ์›ฌ๋งŒํ•œ ๊ธฐ๊ธฐ๋Š” ๋‹ค ์ง€์›ํ–ˆ๋‹ค. 2014๋…„ ์ดํ›„ ์—…๋ฐ์ดํŠธ ์—†์—ˆ๊ณ  2018๋…„์— ์ค‘๋‹จ๋˜์—ˆ๋‹ค.

jQuery๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค.
  • DOM ์—˜๋ฆฌ๋จผํŠธ ์„ ํƒ
  • DOM ํŠธ๋ž˜๋ฒ„์„ค ๋ฐ ์ˆ˜์ •(CSS 1-3 ์ง€์›. ๊ธฐ๋ณธ์ ์ธ XPath๋ฅผ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ˜•ํƒœ๋กœ ์ง€์›)
  • ์ด๋ฒคํŠธ
  • CSS ์กฐ์ž‘[12]
  • ํŠน์ˆ˜ํšจ๊ณผ ๋ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜[13]
  • AJAX ๋ฐ JSON, XML ํŒŒ์‹ฑ
  • JavaScript ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ†ตํ•œ ํ™•์žฅ์„ฑ
  • ์œ ํ‹ธ๋ฆฌํ‹ฐ - ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฅ˜์™€ ๋ฒ„์ „,[14][15] "each" ํ•จ์ˆ˜[16]

๋•๋ถ„์— ๋Œ€ํ•œ๋ฏผ๊ตญ์˜ ๊ตญ๊ฐ€๊ธฐ์ˆ ์ž๊ฒฉ์ธ ์›น๋””์ž์ธ๊ธฐ๋Šฅ์‚ฌ ์‹ค๊ธฐ์‹œํ—˜์—์„œ ๊ธฐ์กด์—๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๋ฅผ Flash๋กœ ์ฃผ๋‹ค๊ฐ€ 2017๋…„๋ถ€ํ„ฐ๋Š” jQuery๋กœ ๋ฐ”๊ฟ”์„œ ์ถœ์ œ๋˜๊ณ  ์žˆ๋‹ค. ์›น๋””์ž์ธ๊ธฐ๋Šฅ์‚ฌ ์ž๊ฒฉ์ฆ์„ ์ทจ๋“ํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์€ ์˜๋ฌด์ ์œผ๋กœ jQuery๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„œ๋ธŒ๋ฉ”๋‰ด์™€ ํŒ์—…์ฐฝ์„ ์ˆจ๊ฒผ๋‹ค ๋„์› ๋‹ค ํ•  ์ค„ ์•Œ์•„์•ผ ํ•˜๊ณ , ๋Œ€ํ˜• ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋“œ๋ฅผ ์›€์ง์ผ ์ค„ ์•Œ์•„์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

jQuery๋Š” ๋ณธ๋ž˜ 1.x, 2.x, 3.x ๋ฒ„์ „์˜ ์„ธ ๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ์—ˆ๋‹ค๊ฐ€ 1.x, 2.x ๋ฒ„์ „์€ ๋ชจ๋‘ ์—…๋ฐ์ดํŠธ๊ฐ€ ์ข…๋ฃŒ๋˜๊ณ , 3.x ๋ฒ„์ „๋งŒ ์—…๋ฐ์ดํŠธ๋˜๊ณ  ์žˆ๋‹ค. ํ›„๋Œ€ ๋ฒ„์ „์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ € ์ง€์›์„ ์œ„ํ•œ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•˜์—ฌ ์šฉ๋Ÿ‰์ด ์ž‘๊ณ  ์†๋„๋„ ๋” ๋น ๋ฅด๋‹ค. Internet Explorer 8 ์ด์ „ ๋ฒ„์ „์˜ ํ˜ธํ™˜์ด ํ•„์š”ํ•˜๋‹ค๋ฉด 1.x๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. 1.x ๋ฒ„์ „ ์ค‘์—์„œ๋„ ํŠนํžˆ 1.9 ๋ฒ„์ „์€ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์ด ๋–จ์–ด์ง€๋Š”๋ฐ, 1.9์—์„œ ์‚ญ์ œ๋œ ๊ฒƒ๋“ค์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด ๋•Œ๋ฌธ์— ์—ฐ์‹์ด ์˜ค๋ž˜๋œ ํˆด์ผ ๊ฒฝ์šฐ์—๋Š” ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ ๋•Œ๋ฌธ์— 1.8 ๋ฒ„์ „์—์„œ ๋จธ๋ฌด๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. 1.9 ๋ฒ„์ „ ์ด์ƒ์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ 1.8 ์ดํ•˜ ๋ฒ„์ „์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ ค๋ฉด jQuery Migrate๋ผ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ํ•˜์ง€๋งŒ ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €๋Š” jQuery๋ฟ๋งŒ ์•„๋‹ˆ๋ผ HTML5์—๋งŒ ์žˆ๋Š” ํƒœ๊ทธ์™€ CSS์—์„œ๋„ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ๋ฐ๋‹ค๊ฐ€[17] ๋ณด์•ˆ ๋ฌธ์ œ ๋•Œ๋ฌธ์— ๊ฐ•์ œ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ์ด๋ฃจ์–ด์ง€๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜์–ด ์žˆ๋‹ค.[18] ๋”ฐ๋ผ์„œ 2020๋…„ ํ˜„์žฌ๋Š” 3.x๋ฒ„์ „์„ ์“ฐ๋Š” ๊ฒŒ ์ •๋‹ต์ด๋‹ค.

2018๋…„ ํ•˜๋ฐ˜๊ธฐ ๊ธฐ์ค€, ์—ญ์‹œ ๊ตญ๋‚ด๋Š” ๋…ผ์™ธ๋กœ ํ•˜๊ณ  ํ•ด์™ธ ์ถ”์„ธ๋ฅผ ๋ณด๋ฉด JavaScript์˜ ๊ธฐ๋Šฅ ์ž์ฒด๊ฐ€ ์ข‹์•„์ง€๋ฉด์„œ jQuery ์˜์กด๋„๊ฐ€ ์ ์ฐจ ๋‚ฎ์•„์ง€๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค.

2020๋…„ 12์›” ๊ธฐ์ค€์œผ๋กœ ์ „์ฒด ์›น ์‚ฌ์ดํŠธ์˜ 77.2%๋Š” jQuery๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.#

3. ์—ฌ๋‹ด[ํŽธ์ง‘]

์„œ๋ฒ„ ์‚ฌ์ด๋“œ JavaScript ์—”์ง„์ธ Node.js์—์„œ๋„ jQuery๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ Node.js์—๋Š” window ์ „์—ญ ๊ฐ์ฒด๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— jsDom์ด๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€๋กœ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค. ์—ญ์‹œ DOM ์กฐ์ž‘์— ์‚ฌ์šฉํ•œ๋‹ค. ๋ณดํ†ต ๋ณต์žกํ•œ ํ…œํ”Œ๋ฆฟ ์ฝ”๋“œ๋ฅผ ์„œ๋ฒ„ ์ชฝ์—์„œ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์›น ํฌ๋กค๋Ÿฌ๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

2016๋…„ 6์›” 9์ผ, jQuery 3.0์ด ์ •์‹ ์ถœ์‹œ๋˜์—ˆ๋‹ค.

๋‚˜๋ฌด์œ„ํ‚ค์—์„œ๋Š” the seed 4.12.0(2019๋…„ 9์›” ๋ง ์ „)๊นŒ์ง€ jQuery 2.1.4 ๋ฒ„์ „์„ ์‚ฌ์šฉํ–ˆ๋‹ค.
[1] CSS ์„ ํƒ์ž์™€ ๋™์น˜์ด๋‹ค. ํ•ด๋‹น ์„ ํƒ์ž๋Š” HTML ํƒœ๊ทธ ์ค‘ id="textNode"๋ผ๋Š” ๊ฐ’์ด ์žˆ๋Š” ๋งจ ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค(id๋Š” HTML ๋ฌธ์„œ ๋‚ด์—์„œ ์œ ์ผํ•œ ๊ฐ’์ด์–ด์•ผ ํ•œ๋‹ค).
[2] ๊ธฐ์ ์˜ ํ˜ธ์ด์ŠคํŒ…(๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋ฅผ ๋จผ์ € ์‚ฌ์šฉํ•˜๊ณ  ํ›„์— ์„ ์–ธ๋ฌธ์„ ์ถ”๊ฐ€ํ•ด๋„ ์ œ๋Œ€๋กœ ๋Œ์•„๊ฐ„๋‹ค)์ด ์ƒ๊ฒจ์„œ ์ฅ๋„ ์ƒˆ๋„ ๋ชจ๋ฅด๊ฒŒ $๋ฅผ ์žฌ์„ ์–ธํ•œ๋‹ค๋ฉด jQuery.noConflict()๋ฅผ ํ˜ธ์ถœํ•ด์„œ $๋Œ€์‹  jQuery()๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค. ๋˜ํ•œ ์ œ์ด์ฟผ๋ฆฌ๋กœ ์“ฐ๋Š” ๋ชจ๋“ˆ์„ (function($){โ—‹โ—‹โ—‹โ—‹โ—‹โ—‹})(jQuery)๋กœ ๊ฐ์‹ธ๊ธฐ๋„ ํ•œ๋‹ค.
[3] ํ•ด๋‹น DOM ์š”์†Œ์— style = "color:red;"๋ฅผ ์ ์šฉ
[4] ๋‹ค๋งŒ ์–ด์ง€๊ฐ„ํ•˜๊ฒŒ ๊ฐ„๋‹จํ•œ ํ™ˆํŽ˜์ด์ง€๊ฐ€ ์•„๋‹ˆ๋ฉด jQuery ์—†์ด๋Š” ๋‹ต์ด ์•ˆ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ํ—ˆ๋‹คํ•˜๋‹ค(...).
[5] ES6๋“ฑ์žฅ ์ดํ›„ DOM์„ ์ง์ ‘ ๊ฑด๋“œ๋ฆฌ๋Š” ๊ฐœ๋ฐœ ๋ฐฉ์‹์€ ์•ˆํ‹ฐํŒจํ„ด(๋‚˜์œํŒจํ„ด)์„ ์–‘์‚ฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐํ”ผ๋˜๋Š” ๋ถ„์œ„๊ธฐ์ด๋‹ค.
[6] ์‹ค์ œ๋กœ ์ „์„ธ๊ณ„ ํŠธ๋ž˜ํ”ฝ ์ƒ์œ„ 1๋งŒ ๊ฐœ ์‚ฌ์ดํŠธ ์ค‘ jQuery ์˜ ์ ์œ ์œจ์€ 2020๋…„์—๋„ ์—ฌ์ „ํžˆ ๊ณผ๋ฐ˜์ธ 54%๋‚˜ ์ฐจ์ง€ ํ•˜๊ณ  ์žˆ๋‹ค.
[7] JSX ์‚ฌ์šฉ์ด ํ•„์ˆ˜๋Š” ์•„๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ React๋ฅผ ์“ฐ๊ธฐ๊ฐ€ ์ƒ๋‹นํžˆ ๋ถˆํŽธํ•ด์ง„๋‹ค.
[8] ๊ทธ๋ˆ„๋ณด๋“œ๋Š” Vue.js ๋ฒ„์ „์ด ์žˆ๋Š”๋ฐ, ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ฐˆ์•„์—Ž๋Š” ์ˆ˜์ค€์œผ๋กœ ์ˆ˜์ •ํ–ˆ๋‹ค.
[9] ์›Œ๋“œํ”„๋ ˆ์Šค๋Š” JSON ํ˜•ํƒœ๋กœ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋Š” Rest API๊ฐ€ ์žˆ๊ณ , ์ด๊ฑธ ์ด์šฉํ•ด์„œ Frontity๋ผ๋Š” React ๊ธฐ๋ฐ˜ ์˜คํ”ˆ์†Œ์Šค ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ ์žˆ๋‹ค.
[10] ๋ฒ„์ „ 5๋ถ€ํ„ฐ๋Š” jQuery๊ฐ€ ๋น ์งˆ ์˜ˆ์ •์ด๋‹ค.
[11] ์ฆ‰, ๋ชจ๋ฐ”์ผ ์›นํŽ˜์ด์ง€์—์„œ jQuery๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ทธ๋ƒฅ jQuery๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์ง€ jQuery Mobile๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.
[12] ์–ด๋””๊นŒ์ง€๋‚˜ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ง€์›ํ•˜๋Š” ๊ฒƒ๊นŒ์ง€๋งŒ. IE8 ์ดํ•˜์—์„œ๋Š” ์ฃฝ์–ด๋ผ border-radius ๋“ฑ์„ ์ค˜๋„ ์•ˆ๋จน๋Š”๋‹ค(...).
[13] ๊ฐ„๋‹จํ•œ ๊ฒƒ๋งŒ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋ณต์žกํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ํ•„์š”ํ•˜๋‹ค๋ฉด jQuery UI๋ผ๋Š” ํ™•์žฅ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
[14] IE, ๋ชจ์งˆ๋ผ ํŒŒ์ด์–ดํญ์Šค, ์˜คํŽ˜๋ผ, WebKit ๋“ฑ์„ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ 1.9 ๋ฒ„์ „ ์ดํ›„๋ถ€ํ„ฐ ์‚ญ์ œ๋˜์—ˆ๋‹ค. ๊ตณ์ด ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด jQuery Migrate๋ผ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๊ตฌํ˜• ๋ฒ„์ „์—์„œ ์ง€์›๋˜์—ˆ์œผ๋‚˜ ์ตœ์‹  ๋ฒ„์ „์—์„œ ์‚ญ์ œ๋œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด ์ค€๋‹ค.
[15] ์‚ญ์ œ๋˜์—ˆ๋‹ค๊ธฐ ๋ณด๋‹ค๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ๋‚˜๊ฐ”๋‹ค๊ณ  ๋ณด๋Š”๊ฒŒ ๋” ์˜ณ๋‹ค. migrate๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์‚ญ์ œ๋œ ๊ธฐ๋Šฅ์„ ๋˜์‚ด๋ฆฌ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๊ณ , ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๊ตฌ๋ถ„ํ•ด์ฃผ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋”ฐ๋กœ ์žˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ๋ถ„๋ฆฌํ•ด ๋‘์ง€ ์•Š์œผ๋ฉด, ๋ฉ”์ธ jQuery์ž์ฒด๊ฐ€ ๋ฒ„์ „์—… ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์ƒˆ๋กœ ์ถœ์‹œ๋œ ๋ธŒ๋ผ์šฐ์ €๋“ค์„ ์ง€์›ํ•  ์ˆ˜ ์—†๊ณ , ์—ญ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ € ์ •๋ณด๋งŒ ์—…๋ฐ์ดํŠธ ๋˜๊ณ  ๊ธฐ๋Šฅ์ƒ ๋ณ€๊ฒฝ์ด ๊ฑฐ์˜ ์—†๋Š”๋ฐ๋„ ๋ฉ”์ธ ๋ฒ„์ „์ด ์˜ฌ๋ผ๊ฐ€๋Š” ์‚ฌํƒœ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ถ„๋ฆฌ๋˜์—ˆ๋‹ค๊ณ  ๋ณด๋Š”๊ฒŒ ์˜ณ๋‹ค.
[16] ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด ๋“ฑ์˜ ์ง‘ํ•ฉ์—์„œ ์š”์†Œ๋ฅผ ์ฐจ๋ก€๋กœ ํ›‘๋Š”๋‹ค. native JS์—์„œ๋Š” "forEach" ํ•จ์ˆ˜๊ฐ€ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.
[17] ํŠนํžˆ 10 ๋ฒ„์ „ ์ด์ „์˜ ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ๊ฐ€ ๊ทธ๋ ‡๋‹ค.
[18] ๊ฐ•์ œ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ•˜๋Š” ์ด์œ ๋Š”, ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ € ์ทจ์•ฝ์ ์ด ์•…์šฉ๋ผ ๊ฐ์—ผ๋œ ์ปดํ“จํ„ฐ๋Š” DDoS ๋ด‡์ด๋‚˜ ๋žœ์„ฌ์›จ์–ด์˜ ๋ฐฐํฌ ๊ฒฝ์œ ์ง€๋กœ ์•…์šฉ๋ผ ๋‚จ๋“ค๊นŒ์ง€ ํ”ผํ•ด๋ฅผ ์ž…ํžˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋‹ค๋งŒ ๊ตฌ๋ฒ„์ „์˜ OS๋Š” ๊ฐ•์ œ ์—…๊ทธ๋ ˆ์ด๋“œ์—์„œ ๋น„๊ปด๊ฐ€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ Windows XP๋Š” IE 8๊นŒ์ง€๋งŒ ์ง€์›ํ•œ๋‹ค.