bQuery.js๊ฐ jQuery์ ์ง๊ด์ฑ์ ์ ํธ ๊ธฐ๋ฐ ๋ฐ์์ฑ์ ๊ฒฐํฉํด ๋น๋ ๋จ๊ณ ์์ด ๋ชจ๋ ์น ๊ฐ๋ฐ ๊ฐ๋ฅ
bQuery.js ๐ฅ The jQuery for the Modern Web Platform
AI ์์ฝ
Context
jQuery๋ DOM ์กฐ์์ ๋จ์ํ๊ฒ ๋ง๋ค์์ผ๋ ๋น๋ ๋๊ตฌ ์ฒด์ธ์ ๋ณต์ก์ฑ ์ฆ๊ฐ, ์ ํธ ๊ธฐ๋ฐ ๋ฐ์์ฑ๊ณผ Web Components ๊ฐ์ ๋ชจ๋ ์น ํ๋ซํผ ๊ธฐ๋ฅ๋ค์ด ๋ณ๋์ ๋ฌด๊ฑฐ์ด ํ๋ ์์ํฌ๋ฅผ ์๊ตฌํ๋ค. ํ๋กํ ํ์ , ๋ด๋ถ ๋๊ตฌ, ์ ์ง์ ๊ฐํ ํ์ด์ง ๊ฐ์ ์๊ท๋ชจ ํ๋ก์ ํธ์์๋ React๋ Vue ๊ฐ์ ํ์คํ ํ๋ ์์ํฌ๊ฐ ๊ณผ๋ํ ์ค์ ๊ณผ ์์กด์ฑ์ ์ด๋ํ๋ค.
Technical Solution
- ์ ๋ก ๋น๋ ์ ๊ทผ: CDN ๋๋ ES ๋ชจ๋์ ํตํด HTML์
<script type="module">ํ๊ทธ๋ก ์ง์ ์ํฌํธ ๊ฐ๋ฅํ๊ฒ ์ค๊ณ - ์ ํธ ๊ธฐ๋ฐ ๋ฐ์์ฑ ํตํฉ:
signal,computed,effectAPI๋ก 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` ๊ฐ์ ์๋ธ๋ชจ๋์ ์ ํ์ ์ผ๋ก ๋์ ํด ํ๋ ์์ํฌ ์ ํ ์์ด ์ ์ง์ ์ผ๋ก ๋ณต์ก๋๋ฅผ ๋์ผ ์ ์๋ค.