ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
bQuery.js ๐Ÿฅ‚ The jQuery for the Modern Web Platform
Dev.toDev.to
Frontend

bQuery.js๊ฐ€ jQuery์˜ ์ง๊ด€์„ฑ์— ์‹ ํ˜ธ ๊ธฐ๋ฐ˜ ๋ฐ˜์‘์„ฑ์„ ๊ฒฐํ•ฉํ•ด ๋นŒ๋“œ ๋‹จ๊ณ„ ์—†์ด ๋ชจ๋˜ ์›น ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ

bQuery.js ๐Ÿฅ‚ The jQuery for the Modern Web Platform

Jonas Pfalzgraf2026๋…„ 3์›” 29์ผ17๋ถ„beginner

Context

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

Technical Solution

  • ์ œ๋กœ ๋นŒ๋“œ ์ ‘๊ทผ: CDN ๋˜๋Š” ES ๋ชจ๋“ˆ์„ ํ†ตํ•ด HTML์˜ <script type="module"> ํƒœ๊ทธ๋กœ ์ง์ ‘ ์ž„ํฌํŠธ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์„ค๊ณ„
  • ์‹ ํ˜ธ ๊ธฐ๋ฐ˜ ๋ฐ˜์‘์„ฑ ํ†ตํ•ฉ: signal, computed, effect API๋กœ jQuery์˜ ์ง๊ด€์„ฑ๊ณผ ๋ชจ๋˜ ๋ฐ˜์‘ํ˜• ์ƒํƒœ ๊ด€๋ฆฌ ๊ฒฐํ•ฉ
  • ๋ชจ๋“ˆ์‹ ์•„ํ‚คํ…์ฒ˜: core, reactive, component, router, store, forms, i18n, a11y, dnd, ssr ๋“ฑ 15๊ฐœ ์ด์ƒ์˜ ๋…๋ฆฝ์  ์„œ๋ธŒ๋ชจ๋“ˆ๋กœ ๊ตฌ์„ฑํ•ด ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ์ž„ํฌํŠธ ๊ฐ€๋Šฅ
  • Web Components ๋„ค์ดํ‹ฐ๋ธŒ ์ง€์›: ํƒ€์ž… ์ง€์ •๋œ props์™€ Shadow DOM์„ ํฌํ•จํ•œ Web Components ์ž‘์„ฑ ๋„๊ตฌ ์ œ๊ณต
  • ๋ณด์•ˆ ์šฐ์„ : DOM ์กฐ์ž‘ ์‹œ ๊ธฐ๋ณธ์œผ๋กœ ์ƒˆ๋‹ˆํƒ€์ด์ œ์ด์…˜ ์ˆ˜ํ–‰ ๋ฐ Trusted Types ํ˜ธํ™˜์„ฑ ๋‚ด์žฅ

Key Takeaway

jQuery์˜ ์ธ์ฒด๊ณตํ•™์  ์„ค๊ณ„๋ฅผ ์ตœ์‹  ์›น ํ”Œ๋žซํผ ๊ธฐ๋Šฅ(์‹ ํ˜ธ, Web Components, Trusted Types)๊ณผ ๊ฒฐํ•ฉํ•˜๋ฉด์„œ ๋ชจ๋“ˆ์‹ ๊ตฌ์กฐ๋กœ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ด๋‹ค. ํ’€์Šคํƒ ํ”„๋ ˆ์ž„์›Œํฌ ์—†์ด๋„ ๋ชจ๋˜ ๋ฐ˜์‘ํ˜• UI๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ์ค‘๊ฐ„ ๊ฒฝ๋กœ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.


๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์ด ์—†์–ด์•ผ ํ•˜๊ฑฐ๋‚˜ ํ”„๋กœํ† ํƒ€์ž…๊ณผ ๋‚ด๋ถ€ ๋„๊ตฌ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•˜๋Š” ํŒ€์ด๋ผ๋ฉด bQuery์˜ CDN ์ž„ํฌํŠธ ๋ฐฉ์‹๊ณผ ์‹ ํ˜ธ API๋ฅผ ํ™œ์šฉํ•ด `import { $, signal, effect } from 'https://unpkg.com/@bquery/bquery@1/dist/full.es.mjs'` ํ•œ ์ค„๋กœ ๋ฐ˜์‘ํ˜• ์ƒํƒœ ๊ด€๋ฆฌ์™€ DOM ์กฐ์ž‘์„ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ์กด ๋ฐ”๋‹๋ผ JS ํ”„๋กœ์ ํŠธ์—์„œ๋„ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ `@bquery/bquery/reactive`๋‚˜ `@bquery/bquery/component` ๊ฐ™์€ ์„œ๋ธŒ๋ชจ๋“ˆ์„ ์„ ํƒ์ ์œผ๋กœ ๋„์ž…ํ•ด ํ”„๋ ˆ์ž„์›Œํฌ ์ „ํ™˜ ์—†์ด ์ ์ง„์ ์œผ๋กœ ๋ณต์žก๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

์›๋ฌธ ์ฝ๊ธฐ