masonfe-hyunsu
๐ 1. ๊ฐ์ : ์ ๋ฐ์ดํธ ๊ณ๊ธฐ.

masoneffect NPM ํจํค์ง๋ฅผ ๊ฐ๋ฐํ ์ดํ, ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ React Bits ํจํค์ง์ Masoneffect ์ปดํฌ๋ํธ๋ฅผ ๊ธฐ์ฌํด๋ณด๋ ค๋ ์๋๊ฐ ์์๋ค. ํ์ง๋ง ์ฌ๋ฌ ์ด์ ๋ก ์ธํด ๊ฒฐ๊ณผ์ ์ผ๋ก๋ ๊ธฐ์ฌ๊น์ง ์ด์ด์ง์ง ๋ชปํ๋ค ๐ฅฒ (์ง๋ ํฌ์คํ ์ฐธ๊ณ )
์๊ฐ์ ๋ค์ฌ ์ค๋นํ๋ ๋งํผ ์์ฌ์๋ ์์๊ณ , ์ด ๊ฒฝํ์ ๊ณ๊ธฐ๋ก ์ธ๋ถ ํจํค์ง์ ๊ธฐ์ฌํ๋ ๋ฐฉํฅ๋ณด๋ค๋ masoneffect ์์ฒด๋ฅผ ํ์ฅํด๋ณด๋ ์ชฝ์ ๊ณ ๋ฏผํ๊ฒ ๋๋ค.
masoneffect๋ฅผ ๋จ์ผ ํจ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋จธ๋ฌด๋ฅด๊ฒ ํ๊ธฐ๋ณด๋ค๋, ์ค์ ํ๋ก์ ํธ์์ ์์ฃผ ์ฐ๋ ์ ๋๋ฉ์ด์ ๋ค์ ํ๋๋ก ๋ฌถ์ ๋ฉํฐ ์ ๋๋ฉ์ด์ ํจํค์ง๋ก ๋ฐ์ ์ํค๋ ๊ฒ์ด ๋ ์๋ฏธ ์๊ฒ ๋ค๋ ํ๋จ์ด ๋ค์๋ค.
๊ทธ๋ ๊ฒ ์์ํ masoneffect v2.0์ ๋จ์ํ ๊ธฐ๋ฅ ์ถ๊ฐ๋ผ๊ธฐ๋ณด๋ค๋, ๋ฐฉํฅ์ฑ์ด ๋ณ๊ฒฝ๋ ์ ๋ฐ์ดํธ๋ผ๊ณ ๋ณผ ์ ์๋ค.
๐จ 2. ์ฌ์ค๊ณ : ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ.
ํจํค์ง ๊ตฌ์กฐ ๋ณํ.

masoneffect v2.0์์ ๊ฐ์ฅ ํฐ ๋ณํ๋ ํจํค์ง ๊ตฌ์กฐ ์์ฒด๊ฐ ๋ฌ๋ผ์ก๋ค๋ ์ ์ด๋ค.
v1.x์์๋ TextToParticle ํ๋์ ํจ๊ณผ๋ง ์ ๊ณตํ๋ ๋จ์ผ ํจ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ค๋ฉด, v2.x๋ถํฐ๋ ์ฌ๋ฌ ์ ๋๋ฉ์ด์ ํจ๊ณผ๋ฅผ ๋ ๋ฆฝ์ ์ธ ๋จ์๋ก ๋ฌถ์ ๋ฉํฐ ์ ๋๋ฉ์ด์ ํจํค์ง ๊ตฌ์กฐ๋ก ๋ณ๊ฒฝ๋์๋ค.
[ v1.x ๊ตฌ์กฐ ]
masoneffect/
โโโ TextToParticle (๋จ์ผ ํจ๊ณผ)
[ v2.x ๊ตฌ์กฐ ]
masoneffect/
โโโ TextToParticle (๊ธฐ์กด ํจ๊ณผ ์ ์ง)
โโโ Typing (์ ๊ท)
โโโ Count (์ ๊ท)
โโโ ScrollFadeIn (์ ๊ท)
โโโ ... (์ง์ ์ถ๊ฐ ์์ )ํจ๊ณผ๋ ์์ผ๋ก๋ ๊ณ์ ์ถ๊ฐ๋ ์์ ์ด์ง๋ง, ๊ฐ ํจ๊ณผ๋ฅผ ๋ ๋ฆฝ์ ์ธ ๋ชจ๋ ๋จ์๋ก ๋ถ๋ฆฌํ๊ณ Tree Shaking์ด ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ก ์ค๊ณํด, ์ค์ ๋ก ์ฌ์ฉํ๋ ํจ๊ณผ๋ง ๋ฒ๋ค์ ํฌํจ๋๋๋ก ๊ด๋ฆฌํ ๊ณํ์ด๋ค.
๐๏ธ 3. ์ ๊ท ํจ๊ณผ : ์ ๋๋ฉ์ด์ ํ์ฅ.
(1) Count (์นด์ดํ ํจ๊ณผ)
Number type์ ์์๊ฐ์์ ๋ชฉํ๊ฐ๊น์ง ๋ถ๋๋ฝ๊ฒ ์ฆ๊ฐํ๋ ์ ๋๋ฉ์ด์ .
์ฃผ์ ํน์ง.
์์๊ฐ/๋ชฉํ๊ฐ ์ค์ .
์ ๋๋ฉ์ด์ ์ง์ ์๊ฐ ์กฐ์ . (
duration)๊ธฐํ ์ด์ง ํจ์ ์ง์.
์ค์๊ฐ ๊ฐ ์กฐํ ๊ฐ๋ฅ.
์ฌ์ฉ ์์. (react)
import Count from 'masoneffect/react/count';
<Count startValue={0} targetValue={1000} duration={2000} easing={easingFunctions.easeOutCubic} />;(2) Typing (ํ์ดํ ํจ๊ณผ)
ํ ์คํธ๊ฐ ํ ๊ธ์์ฉ ํ์ดํ๋๋ ๊ฒ์ฒ๋ผ ํ์๋๋ ์ ๋๋ฉ์ด์ .
์ฃผ์ ํน์ง.
ํ์ดํ ์๋ ์กฐ์ ๊ฐ๋ฅ (
speed)์์ ์ง์ฐ ์๊ฐ ์ค์ (
delay)๋ฐ๋ณต ์ฌ์ ์ต์ (
loop)
์ฌ์ฉ ์์. (react)
import Typing from 'masoneffect/react/typing';
<Typing text="Hello World" speed={100} delay={500} loop={false} />;(3) ScrollFadeIn (์คํฌ๋กค ํ์ด๋์ธ ํจ๊ณผ)
์คํฌ๋กค ์ ์์๊ฐ ํ๋ฉด์ ๋ํ๋๋ฉด์ ํ์ด๋์ธ๋๋ ์ ๋๋ฉ์ด์ .
์ฃผ์ ํน์ง.
IntersectionObserver ๊ธฐ๋ฐ.
์คํฌ๋กค ์์น ๊ธฐ๋ฐ ํธ๋ฆฌ๊ฑฐ.
ํ์ด๋ ์ง์ ์๊ฐ ์กฐ์ .
์ฌ์ฉ ์์. (react)
import ScrollFadeIn from 'masoneffect/react/scrollFadeIn';
<ScrollFadeIn duration={1000} threshold={0.1} triggerOnce={true}>
<YourContent />
</ScrollFadeIn>;๐ณ 4. Version 2์ ์ฃผ์ ์ฅ์ .
(1) Tree Shaking ์ง์.
ํ์ํ ํจ๊ณผ๋ง ์ ํ์ ์ผ๋ก importํ์ฌ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ต์ํ.
// ์ฌ์ฉํ๋ ํจ๊ณผ๋ง ๋ฒ๋ค์ ํฌํจ. (ex. TextToParticle)
import { TextToParticle } from 'masoneffect/textToParticle';
import { Count } from 'masoneffect/count';๊ฐ๋ณ export ๊ฒฝ๋ก: ๊ฐ ํจ๊ณผ๊ฐ ๋ ๋ฆฝ์ ์ธ ๊ฒฝ๋ก๋ก ์ ๊ณต๋์ด ๋ฒ๋ค๋ฌ๊ฐ ์ ํํ ํ์ํ ์ฝ๋๋ง ํฌํจ.
์๋ ์ต์ ํ: Webpack, Vite, Rollup์ฒ๋ผ ESM๊ณผ tree-shaking์ ์ง์ํ๋ ๋ฒ๋ค๋ฌ์์ ๋ฏธ์ฌ์ฉ ํจ๊ณผ๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ฌ์ด ๊ตฌ์กฐ.
์์ ๋ฒ๋ค ํฌ๊ธฐ: ์ ์ฒด ํจํค์ง๋ฅผ ์ค์นํด๋ ์ค์ ์ฌ์ฉํ๋ ํจ๊ณผ๋ง ๋ฒ๋ค์ ํฌํจ.
(2) ๋ ๋๋ง ์ต์ ํ.
์ฑ๋ฅ์ ๊ณ ๋ คํ ์ต์ ํ ๋ก์ง ์ ์ฉ.
IntersectionObserver ํ์ฉ: ์์๊ฐ ๋ทฐํฌํธ์ ๋ณด์ผ ๋๋ง ์ ๋๋ฉ์ด์ ์คํ.
Page Visibility API: ๋ธ๋ผ์ฐ์ ํญ์ด ์จ๊ฒจ์ง๋ฉด ์๋์ผ๋ก ์ ๋๋ฉ์ด์ ์ผ์์ ์ง.
requestAnimationFrame: requestAnimationFrame ๊ธฐ๋ฐ ์ฌ์์ผ๋ก ๋ถ๋๋ฌ์ด ํ๋ ์ ์ ํ์ ๋ชฉํ๋ก ํจ.
ResizeObserver: ์ปจํ ์ด๋ ํฌ๊ธฐ ๋ณ๊ฒฝ ์ ์๋ ๋ฆฌ์ฌ์ด์ง.
Debouncing: ๋ฆฌ์ฌ์ด์ฆ, ์ ๋ฐ์ดํธ ๋ฑ ๋น๋ฒํ ์ด๋ฒคํธ ์ต์ ํ.
(3) ์์กด์ฑ ์๋ ํจํค์ง.
ํ๋ ์์ํฌ ์์กด์ฑ ์์ด ์์ JavaScript๋ก ๊ตฌํ๋ ํต์ฌ ๋ก์ง.
Zero Runtime Dependencies: ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์กด์ฑ ์์.
๊ฒฝ๋ ํจํค์ง: ๋ถํ์ํ ์์กด์ฑ์ผ๋ก ์ธํ ๋ฒ๋ค ํฌ๊ธฐ ์ฆ๊ฐ ๋ฐฉ์ง.
์์ ์ฑ: ์์กด์ฑ ์ ๋ฐ์ดํธ๋ก ์ธํ breaking change ๊ฑฑ์ ์์.
(4) ๋ฒ์ฉ ํธํ์ฑ.
React, Vue, Svelte, Vanilla JavaScript ๋ชจ๋ ํ๊ฒฝ์์ ๋์ผํ API๋ก ์ฌ์ฉ ๊ฐ๋ฅ.
// React
import TextToParticle from 'masoneffect/react/textToParticle';
// Vue
import TextToParticle from 'masoneffect/vue/textToParticle';
// Svelte
import TextToParticle from 'masoneffect/svelte/textToParticle';
// Vanilla JS
import { TextToParticle } from 'masoneffect/textToParticle';ํ๋ ์์ํฌ๋ณ ๋ํผ ์ ๊ณต: ๊ฐ ํ๋ ์์ํฌ์ ๊ด๋ก์ ๋ง๋ ์ปดํฌ๋ํธ ์ ๊ณต.
์ผ๊ด๋ API: ํ๋ ์์ํฌ๋ฅผ ๋ฐ๊ฟ๋ ๋์ผํ ์ต์ ๊ณผ ๋ฉ์๋ ์ฌ์ฉ.
ํ์ ์์ ์ฑ: TypeScript๋ก ๋ชจ๋ ํ๋ ์์ํฌ์์ ์์ ํ ํ์ ์ง์.
์ ์ฐํ ๋ง์ด๊ทธ๋ ์ด์ : ํ๋ก์ ํธ ํ๋ ์์ํฌ ๋ณ๊ฒฝ ์ ์ฝ๋ ์์ ์ต์ํ.
(5) AI ๊ธฐ๋ฐ ์ง์.
llms.txt
AI ์์ด์ ํธ๊ฐ ํ๋ก์ ํธ ๊ตฌ์กฐ์ ์ฌ์ฉ ํ๊ฒฝ์ ์๋์ผ๋ก ํ์ ํ ์ ์๋๋ก ์ต์ํ์ ๊ฐ์ด๋๋ฅผ ์ ๊ณตํ๋ค.
์ด๋ฅผ ํตํด React, Vue, Svelte, Vanilla ๋ฑ ์ฌ์ฉ ์ค์ธ ํ๊ฒฝ์ ๋ง๋ ์ค์ ๊ณผ ์์ ์ฝ๋๋ฅผ ๋ณด๋ค ์ ํํ๊ฒ ์๋ด๋ฐ์ ์ ์๋๋ก ํ๋ค.
context7.json ๋ฉํ๋ฐ์ดํฐ.
masoneffect์ ํจํค์ง ๊ตฌ์กฐ, ์ ๊ณต๋๋ ํจ๊ณผ, ํ๋ ์์ํฌ๋ณ ์ง์ ๊ฒฝ๋ก ๋ฑ์ ๊ตฌ์กฐํ๋ ๋ฉํ๋ฐ์ดํฐ ํํ๋ก ์ ๋ฆฌํ๋ค.
AI ์์ด์ ํธ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ ์ ์ดํดํ๊ณ , ์ํฉ์ ๋ง๋ ํจ๊ณผ๋ฅผ ์ถ์ฒํ๊ฑฐ๋ ์ ์ ํ ์ฌ์ฉ ์์๋ฅผ ์ ์ํ๋ ๋ฐ์ ๋์์ ์ฃผ๋ ์ญํ ์ ํ๋ค.
โ๏ธ 5. ๋ง๋ฌด๋ฆฌ : ํ๊ณ .

masoneffect v2.0์ ๋จ์ํ ํจ๊ณผ ๋ช ๊ฐ๋ฅผ ์ถ๊ฐํ ์ ๋ฐ์ดํธ๋ผ๊ธฐ๋ณด๋ค๋, ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ด์ํด ๋๊ฐ์ง ๋ฐฉํฅ์ฑ์ ์ ๋ฆฌํ ์ ๋ฐ์ดํธ๊ฐ ๋์๋ค๊ณ ์๊ฐํ๋ค.
์์ง ๋ถ์กฑํ๊ณ ๋ณด์ํด์ผ ํ ๋ถ๋ถ๋ ๋ง์ง๋ง, ๊ธํ๊ฒ ํ์ฅํ๊ธฐ๋ณด๋ค๋ ์ฒ์ฒํ ๊ผผ๊ผผํ๊ฒ ๋ค๋ฌ์ด๊ฐ ์์ ์ด๋ค.
์์ผ๋ก๋ ๊ฐ์๋ฅผ ์ฑ์ฐ๊ธฐ๋ณด๋ค ์ค์ ์ฌ์ฉ ๊ณผ์ ์์ ์๋ฏธ๊ฐ ํ์ธ๋ ํจ๊ณผ๋ฅผ ์ค์ฌ์ผ๋ก ์ถ๊ฐํ ์๊ฐ์ด๋ค.
๋๊ธ