2025 ์ด์ œ jQuery๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋˜๋Š” ์ด์œ 

2025 ์ด์ œ jQuery๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋˜๋Š” ์ด์œ 

D
dongAuthor
4 min read

2006๋…„ ์กด ๋ ˆ์‹์ด "write less, do more"๋ผ๋Š” ๋ชจํ† ์™€ ํ•จ๊ป˜ jQuery๋ฅผ ์„ธ์ƒ์— ์„ ๋ณด์˜€์„ ๋•Œ, ์›น ๊ฐœ๋ฐœ์€ ์ƒˆ๋กœ์šด ์‹œ๋Œ€๋ฅผ ๋งž์ดํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•œ๋•Œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ์›น์‚ฌ์ดํŠธ์˜ 65%๊ฐ€ ์‚ฌ์šฉํ•  ์ •๋„๋กœ jQuery๋Š” ์›น ๊ฐœ๋ฐœ์˜ ํ•„์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ž๋ฆฌ ์žก์•˜์ฃ . ๋ณต์žกํ•œ DOM ์กฐ์ž‘๊ณผ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ, ์• ๋‹ˆ๋ฉ”์ด์…˜, Ajax ์š”์ฒญ๊นŒ์ง€ ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๋กœ ํ•ด๊ฒฐํ•ด์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

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

๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ถ€์ƒ

jQuery๊ฐ€ ํฐ ์ธ๊ธฐ๋ฅผ ๋Œ์—ˆ๋˜ ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” โ€˜ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ง•โ€™ ๋ฌธ์ œ ํ•ด๊ฒฐ์ด์—ˆ์Šต๋‹ˆ๋‹ค. 2007๋…„๋งŒ ํ•ด๋„ ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ(IE)๊ฐ€ 60% ์ด์ƒ์˜ ์‹œ์žฅ ์ ์œ ์œจ์„ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์—ˆ๊ณ , ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” ์ผ์ด ๋น„์ผ๋น„์žฌํ–ˆ์Šต๋‹ˆ๋‹ค. jQuery๋Š” ์ด๋Ÿฌํ•œ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์–ด๋–ค ๋ธŒ๋ผ์šฐ์ €์—์„œ๋“  ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ 2008๋…„ ํฌ๋กฌ์ด ๋“ฑ์žฅํ•˜๋ฉด์„œ ์ƒํ™ฉ์€ ๋ฐ”๋€Œ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ํฌ๋กฌ์€ ๋น ๋ฅธ ๋ Œ๋”๋ง ์†๋„์™€ ์›น ํ‘œ์ค€ ์ค€์ˆ˜๋ฅผ ๋ฌด๊ธฐ๋กœ ๋น ๋ฅด๊ฒŒ ์‹œ์žฅ ์ ์œ ์œจ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €๋“ค๋„ ์›น ํ‘œ์ค€์„ ์ ๊ทน์ ์œผ๋กœ ๋”ฐ๋ฅด๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด์„œ, ๋ธŒ๋ผ์šฐ์ € ๊ฐ„ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋Š” ์ ์ฐจ ์ค„์–ด๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

ECMAScript ํ‘œ์ค€์ด ๋ฐœ์ „ํ•˜๋ฉด์„œ ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(Vanilla JS)๋งŒ์œผ๋กœ๋„ ๊ณผ๊ฑฐ jQuery๊ฐ€ ์ œ๊ณตํ•˜๋˜ ๊ธฐ๋Šฅ ๋Œ€๋ถ€๋ถ„์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด์ œ๋Š” querySelector, querySelectorAll, classList ๊ฐ™์€ ๋„ค์ดํ‹ฐ๋ธŒ DOM API๋ฅผ ์‚ฌ์šฉํ•ด jQuery ์—†์ด๋„ ๊ฐ„ํŽธํ•˜๊ฒŒ DOM ์š”์†Œ๋ฅผ ์„ ํƒํ•˜๊ณ  ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Ajax ์š”์ฒญ ์—ญ์‹œ fetch API๋ผ๋Š” ํ‘œ์ค€ ๊ธฐ๋Šฅ์œผ๋กœ ๋Œ€์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

jQuery๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๊ธฐ์ˆ ๋“ค

์˜ค๋Š˜๋‚  ์›น ๊ฐœ๋ฐœ์—์„œ๋Š” jQuery ๋Œ€์‹  ๋” ํšจ์œจ์ ์ด๊ณ  ํ˜„๋Œ€์ ์ธ ๋Œ€์•ˆ๋“ค์ด ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ (Vanilla JS)

์•ž์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด, ์ด์ œ ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํžˆ ๋งŽ์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. jQuery์˜ ์—ฌ๋Ÿฌ ๋ฉ”์„œ๋“œ๋“ค์€ ์ด์ œ ๋„ค์ดํ‹ฐ๋ธŒ API๋กœ ๊ฑฐ์˜ ๋‹ค ๊ตฌํ˜„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • DOM ์„ ํƒ: $('.class') ๋Œ€์‹  document.querySelector('.class')
  • Ajax ์š”์ฒญ: $.ajax() ๋Œ€์‹  fetch() API
  • ํด๋ž˜์Šค ์กฐ์ž‘: $(element).addClass('foo') ๋Œ€์‹  element.classList.add('foo')

๋˜ํ•œ, Babel์ด๋‚˜ Webpack ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ์‹  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ ๋ฌธ์ œ์—†์ด ๋™์ž‘ํ•˜๋„๋ก ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์–ด, ๊ตณ์ด jQuery์— ์˜์กดํ•  ํ•„์š”๊ฐ€ ์—†์–ด์กŒ์Šต๋‹ˆ๋‹ค.

React, Vue.js์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ

์ตœ์‹  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์˜ ์ค‘์‹ฌ์—๋Š” React, Vue, Angular์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋“ค์€ ๋‹จ์ˆœํžˆ DOM์„ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด, ์„ ์–ธ์ ์ด๊ณ  ๋ชจ๋“ˆํ™”๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์„ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋” ํšจ์œจ์ ์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ '๊ฐ€์ƒ๋”(Virtual DOM)'์˜ ์‚ฌ์šฉ์ž…๋‹ˆ๋‹ค. jQuery๋Š” ์‹ค์ œ DOM์„ ์ง์ ‘ ์กฐ์ž‘ํ•˜๋Š” ๋ฐ˜๋ฉด, React์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ์กด์žฌํ•˜๋Š” ๊ฐ€๋ฒผ์šด ๊ฐ€์ƒ๋”์„ ๋จผ์ € ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ํ›„ ์ด์ „ ๊ฐ€์ƒ๋”๊ณผ ๋น„๊ตํ•˜์—ฌ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ์‹ค์ œ DOM์— ํ•œ ๋ฒˆ์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ๋ถˆํ•„์š”ํ•œ DOM ์ ‘๊ทผ๊ณผ ๋ Œ๋”๋ง์„ ์ตœ์†Œํ™”ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

์„ฑ๋Šฅ ๋น„๊ต: jQuery vs ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ

์„ฑ๋Šฅ ์ธก๋ฉด์—์„œ jQuery๋Š” ๋ช‡ ๊ฐ€์ง€ ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํŒŒ์ผ ํฌ๊ธฐ: ๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด jQuery ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ „์ฒด๋ฅผ ๋กœ๋“œํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๋น„ํ•ด ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋А๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. jQuery๋Š” ์›๋ž˜ ์ตœ์ ํ™”๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ์„ค๊ณ„๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ ์šฉ๋Ÿ‰์ด ์ƒ๋Œ€์ ์œผ๋กœ ํฝ๋‹ˆ๋‹ค.
  • DOM ์กฐ์ž‘ ์†๋„: jQuery๋Š” ์‹ค์ œ DOM์„ ์ง์ ‘ ์กฐ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์žฆ์€ ๋™์  DOM ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚  ๊ฒฝ์šฐ, ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚  ๋•Œ๋งˆ๋‹ค ๋ ˆ์ด์•„์›ƒ์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๊ณ  ํ™”๋ฉด์„ ์ƒˆ๋กœ ๊ทธ๋ฆฌ๋Š” ๊ณผ์ •(๋ฆฌํ”Œ๋กœ์šฐ ๋ฐ ๋ฆฌํŽ˜์ธํŠธ)์„ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋˜์–ด ์„ฑ๋Šฅ ์ €ํ•˜์˜ ์›์ธ์ด ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, ๊ฐ€์ƒ๋”์„ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ์ตœ์†Œํ™”ํ•˜์—ฌ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  • ์ฝœ ์Šคํƒ: jQuery๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋ฅผ ๊ณผ๋„ํ•˜๊ฒŒ ๊ฐ์‹ธ๋Š” ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์–ด, DOM ์กฐ์ž‘ ์‹œ ํ˜ธ์ถœ ์Šคํƒ์ด ๊นŠ์–ด์ ธ ์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก , jQuery๋„ ์ง€์†์ ์ธ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด ์„ฑ๋Šฅ์ด ๋งŽ์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ณต์žกํ•˜๊ณ  ๋™์ ์ธ ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๊ฐ€์ƒ๋” ๊ธฐ๋ฐ˜์˜ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ์‹œ์ž‘์„ ์œ„ํ•œ ์ œ์–ธ

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

ํ•˜์ง€๋งŒ ์ด์ œ ์›น ๊ฐœ๋ฐœ์˜ ํŒจ๋Ÿฌ๋‹ค์ž„์€ ๋ณ€ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์›น ํ‘œ์ค€์ด ์„ฑ์ˆ™ํ•ด์กŒ๊ณ , ์„ฑ๋Šฅ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์ด ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ์˜ ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒˆ๋กœ ๊ฐœ๋ฐœํ•œ๋‹ค๋ฉด, ๋ชจ๋“ˆํ™”์™€ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ์ด ์–ด๋ ค์šด jQuery๋Š” ๋” ์ด์ƒ ์ด์ƒ์ ์ธ ์„ ํƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

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

2025 ์ด์ œ jQuery๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋˜๋Š” ์ด์œ  | devdong