mason
mason-log.

GitHub ๋กœ๊ทธ์ธ ์ค‘

masoneffect NPM Update.(ver2)
mason

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์€ ๋‹จ์ˆœํžˆ ํšจ๊ณผ ๋ช‡ ๊ฐœ๋ฅผ ์ถ”๊ฐ€ํ•œ ์—…๋ฐ์ดํŠธ๋ผ๊ธฐ๋ณด๋‹ค๋Š”, ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์šด์˜ํ•ด ๋‚˜๊ฐˆ์ง€ ๋ฐฉํ–ฅ์„ฑ์„ ์ •๋ฆฌํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

  • ์•„์ง ๋ถ€์กฑํ•˜๊ณ  ๋ณด์™„ํ•ด์•ผ ํ•  ๋ถ€๋ถ„๋„ ๋งŽ์ง€๋งŒ, ๊ธ‰ํ•˜๊ฒŒ ํ™•์žฅํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์ฒœ์ฒœํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ๋‹ค๋“ฌ์–ด๊ฐˆ ์˜ˆ์ •์ด๋‹ค.

  • ์•ž์œผ๋กœ๋Š” ๊ฐœ์ˆ˜๋ฅผ ์ฑ„์šฐ๊ธฐ๋ณด๋‹ค ์‹ค์ œ ์‚ฌ์šฉ ๊ณผ์ •์—์„œ ์˜๋ฏธ๊ฐ€ ํ™•์ธ๋œ ํšจ๊ณผ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ƒ๊ฐ์ด๋‹ค.


๐Ÿ”— 6. ํ”„๋กœ์ ํŠธ ๋งํฌ.

์ด์ „ ๊ธ€
React Bits์— MasonEffect๋ฅผ ์ œ์•ˆํ•˜๋ฉฐ ๋ฐฐ์šด ๊ฒƒ.

๋Œ“๊ธ€

๋ถˆ๋Ÿฌ์˜ค๋Š” ์ค‘...
๋ชฉ๋ก์œผ๋กœ