naver/fe-news ๋‰ด์Šค๋ ˆํ„ฐ ๋ทฐ์–ด (๋น„๊ณต์‹)

๋ชฉ์ฐจ
๋ชฉ์ฐจ

    2021-09

    ๋งํฌ & ์ฝ์„๊ฑฐ๋ฆฌ

    FE devtalk 20ํšŒ, ๋””์ž์ธ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ ํŽธ 2ํƒ„

    ์ง€๋‚œ 8์›” 17์ผ, ๋„ค์ด๋ฒ„์—์„œ ์ง„ํ–‰ํ•˜๋Š” ์‚ฌ๋‚ด ํ”„๋ก ํŠธ์—”๋“œ ์ปจํผ๋Ÿฐ์Šค์ธ FE Devtalk์—์„œ "๋””์ž์ธ ์‹œ์Šคํ…œ(๊ฐœ๋ฐœํŽธ 2ํƒ„)"๋ž€ ์ฃผ์ œ๋กœ 20ํšŒ ํ–‰์‚ฌ๊ฐ€ ์ง„ํ–‰๋˜์—ˆ๋‹ค.

    ์˜์นด, ๋ฑ…ํฌ์ƒ๋Ÿฌ๋“œ, ์นด์นด์˜ค ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ, ์ง๋ฐฉ๊ณผ ๊ฐ™์€ ์ธํ„ฐ๋„ท ์„œ๋น„์Šค ํšŒ์‚ฌ๋“ค์ด ์ž์ฒด์ ์ธ ๋””์ž์ธ ์‹œ์Šคํ…œ์„ ์–ด๋–ป๊ฒŒ ๊ธฐํš/๋””์ž์ธ/๊ฐœ๋ฐœ/ํ˜‘์—…ํ•˜๊ณ  ์žˆ์„๊นŒ ๋ผ๋Š” ๊ถ๊ธˆ์ฆ์œผ๋กœ ์‹œ์ž‘๋œ ์ด ์ฃผ์ œ๋Š” 3ํšŒ์— ๊ฑธ์ณ ์ง„ํ–‰๋˜๋ฉด์„œ ๊ทธ ์ด์•ผ๊ธฐ๋“ค์„ ํ’€์–ด๋‚ด๊ณ  ์žˆ๋‹ค.

    ์ด๋ฒˆ 20ํšŒ์—์„  ์ฝ”๋ฉ˜ํ† , ์ฝ”๋ฐœํŠธ, ์™€๋””์ฆˆ, ์ง๋ฐฉ์˜ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ฐธ์—ฌํ•ด ๋””์ž์ธ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ๊ฒฝํ—˜์„ ๊ณต์œ ํ–ˆ๋‹ค. ์•„๋ž˜ ๋งํฌ์—์„œ ๋ฐœํ‘œ๋“ค์„ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    TensorFlow๋กœ ๋””์ž์ธ์‹œ์Šคํ…œ ๋งŒ๋“ค๊ธฐ

    ๋””์ž์ธ ์‹œ์Šคํ…œ์„ ์‹ค์ œ๋กœ ๋งŒ๋“œ๋Š” ๋””์ž์ด๋„ˆ์˜ ์ž…์žฅ์—์„œ ๋งค๋ฒˆ ๊ณ ํ†ต์Šค๋Ÿฝ๊ฒŒ ๋ฐ˜๋ณตํ•ด์•ผํ•˜๋Š” ์ž‘์—…์ด ๋งŽ๋‹ค.

    ์ด๋ฅผ Zeplin๊ณผ tensorflow.js์˜ ๊ฐ์ฒด์ธ์‹(Object Detection)์„ ์‚ฌ์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋˜ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ์†Œ๊ฐœํ•˜๊ณ  ์žˆ๋‹ค.

    Zeplin-ML๋ผ๋Š” ์ด ํ”„๋กœ์ ํŠธ๋Š” ์Šคํฌ๋ฆฐ ๋””์ž์ธ๋“ค์—์„œ UI๊ฐ์ฒด๋ฅผ ์ฐพ์•„์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ, ๊ทธ๊ฒƒ์„ ๋น„๊ตํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์ปดํฌ๋„ŒํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™”๋ฉด๋“ค๋„ ์ œ๊ณตํ•œ๋‹ค.

    JavaScript vs JavaScript. Fight!

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

    ํ•œ ๋ฒˆ์ฏค์€ ๋‹ค๋“ค ๊ณ ๋ฏผํ•ด ๋ดค์„ ์ฃผ์ œ๋“ค์ธ MPA vs SPA, React vs Reactivity, VDOM vs No VDOM, Components vs Web Components ๋“ฑ์˜ ๋…ผ์ ๋“ค์ด ๋ฌด์—‡์ด๊ณ  ์–ด๋– ํ•œ ์ ์„ ๊ณ ๋ คํ•ด์•ผ ํ• ์ง€ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    Modern web apps without JavaScript bundling or transpiling

    2000๋…„๋Œ€ RJS (Ruby-to-JavaScript)๋‚˜ CoffeeScript ๋“ฑ์„ ํ†ตํ•ด JavaScript๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ JavaScript ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ด ๋‚ผ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๊ณ , ์ดํ›„ 2015๋…„ ES6๋กœ์˜ ๋ฐœ์ „์„ ํ†ตํ•ด ๋” ๋‚˜์€ JavaScript ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๊ณ , ์ตœ์‹  ๋ฌธ๋ฒ•์˜ ๋ธŒ๋ผ์šฐ์ € ์ง€์›์„ ๊ธฐ๋‹ค๋ฆด ํ•„์š” ์—†์ด Babel์ด ๋ฏธ๋ž˜์˜ ์ตœ์‹  ๋ฌธ๋ฒ•์˜ ์ฝ”๋“œ๋ฅผ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ๊ณต์งœ๊ฐ€ ์•„๋‹ˆ์—ˆ๊ณ , ์›น์˜ ๋ณต์žก์„ฑ์„ ์ˆ˜๋ฐ˜ํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค.

    ์˜ค๋Š˜๋‚ ์˜ ์›น ํ™˜๊ฒฝ์—์„œ transpiler๋‚˜ ๋ฒˆ๋“ค๋ง ๋„๊ตฌ๊ฐ€ ๊ผญ ํ•„์š”ํ•œ ๊ฒƒ์ผ๊นŒ?

    CSS module scripts: import stylesheets like JavaScript modules

    CSS ํŒŒ์ผ์„ ESM๊ณผ ๊ฐ™์ด import ๋ฌธ๋ฒ•์œผ๋กœ ๋กœ๋”ฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” CSS module script ์ง€์›์ด Edge์™€ Chrome 93์— ์ถ”๊ฐ€๋  ์˜ˆ์ •์ด๋‹ค.

    import sheet from './styles.css' assert { type: 'css' };
    
    document.adoptedStyleSheets = [sheet];
    shadowRoot.adoptedStyleSheets = [sheet];
    

    ๋ณด๋‹ค ์ž์„ธํ•œ CSS Module Script์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜๋ผ.

    Node v16.8.0 (Current) Released

    Node V16.8.0์ด ๋ฆด๋ฆฌ์ฆˆ ๋˜์—ˆ๋‹ค. V16.6.0๋ฒ„์ „ ๋ถ€ํ„ฐ๋Š” Array.prototype.at ์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋”์ด์ƒ array[array.length-1] ๋กœ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์ฐพ์•„๊ฐˆ ํ•„์š”๊ฐ€ ์—†๋‹ค. array.at(-1) ์ด๋ฉด ๋!

    A Visual Guide to React Rendering - useMemo

    props๊ฐ€ ๋ฐ”๋€Œ์ง€๋„ ์•Š์•˜๋Š”๋ฐ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง๋˜๋Š” ํ˜„์ƒ์˜ ์ด์œ ์™€ useMemo๋ฅผ ํ†ตํ•œ ํ•ด๊ฒฐ๊ณผ์ •์„ ์•Œ๋ ค์ฃผ๋Š” ๊ฐ€์ด๋“œ์ด๋‹ค. ์˜๋„์น˜ ์•Š์€ ๋ฆฌ๋ Œ๋”๋ง์œผ๋กœ ๊ณ ์ƒํ•œ ๊ฒฝํ—˜์ด ์žˆ๋‹ค๋ฉด 1๋…์„ ๊ถŒํ•œ๋‹ค.

    Headless UI Library๋ž€?

    ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๊ฐœ๋ฐœํ•  ๋•Œ์— Headless๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ์–ด๋–ค ์ ์ด ์ข‹์•„์ง€๋Š”์ง€ ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค.

    ์—ฌ๊ธฐ์„œ Headless(๋˜๋Š” Renderless)๋ž€ ์ปดํฌ๋„ŒํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์Šคํƒ€์ผ์„ ๋‹ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์„ ์ œ์™ธํ•˜๊ณ  ์ƒํƒœ์™€ ๊ด€๋ จ๋œ ๋ถ€๋ถ„๋งŒ์„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

    Typescript 4.4์— ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ

    TypeScript 4.4์— ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์„ค๋ช…ํ•œ ๊ธ€์ด๋‹ค.
    class์—์„œ static ๋ธ”๋ก์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค. ๋˜ํ•œ, ๊ธฐ์กด์—๋Š” Type Guard๋ฅผ ํ†ตํ•ด ํ•ด๊ฒฐํ–ˆ๋˜ ๋ฌธ์ œ๋ฅผ 4.4์—์„œ๋Š” "alias ๋œ ์กฐ๊ฑด๋ฌธ๊ณผ ํŒ๋ณ„๋ฌธ ํ๋ฆ„ ๋ถ„์„"์„ ํ†ตํ•ด ์ข€๋” ์‰ฝ๊ฒŒ ํƒ€์ž… ์ถ”๋ก ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    Guideline from the 70's on how to split your React components

    ์ปดํฌ๋„ŒํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ๋‚˜๋ˆŒ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ์‰ฌ์šด ์ผ์ด ์•„๋‹ˆ๋‹ค. ์ด ๊ธ€์€ David Parnas์˜ 1979๋…„ โ€œDesigning Software for Ease of Extension and Contractionโ€์—์„œ ์–ป์€ ์•„์ด๋””์–ด์— ๊ธฐ์ดˆํ•˜์—ฌ, ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜ ๋น„์šฉ์„ ์ค„์ด๋Š” ์ธก๋ฉด์—์„œ ์–ด๋–ป๊ฒŒ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์„์ง€ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ œ์‹œํ•œ๋‹ค.

    Whatโ€™s the Average JavaScript Developer Salary in 2021?

    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ์›น ์ƒํƒœ๊ณ„์˜ ๋ถ€ํฅ์— ๋”ฐ๋ผ ์ˆ˜ ๋งŽ์€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋“ฑ์žฅํ–ˆ๊ณ  ์ตœ๊ทผ์—๋Š” React, Angular, Vue 3๊ฐ• ๊ตฌ๋„๊ฐ€ ์œ ์ง€๋˜๊ณ ์žˆ๋‹ค. ๊ฐ ํ”„๋ ˆ์ž„์›Œํฌ ๋ณ„ ์—ฐ๋ด‰์€ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

    ์œ„ ๊ธ€์—์„œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž์˜ ์—ฐ๋ด‰๊ณผ ํ”„๋ ˆ์ž„์›Œํฌ ๋ณ„ ์—ฐ๋ด‰์„ ์„œ๊ตฌ๊ถŒ ๊ตญ๊ฐ€ ์œ„์ฃผ๋กœ ํ†ต๊ณ„๋ฅผ ๋‚ด์„œ ์ •๋ฆฌํ•ด๋†“์•˜๋‹ค. (์•„์‰ฝ๊ฒŒ๋„ ๋Œ€ํ•œ๋ฏผ๊ตญ์˜ ํ†ต๊ณ„๋Š” ์—†๋‹ค.)

    ํŠœํ† ๋ฆฌ์–ผ

    Vanilla Javascript๋กœ ์ƒํƒœ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ๋งŒ๋“ค๊ธฐ

    Flux ๊ธฐ๋ฐ˜์˜ Redux, Vuex์˜ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ Vanilla JS๋ฅผ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค์–ด ๊ฐ€๋Š” ํŠœํ† ๋ฆฌ์–ผ ๋ฌธ์„œ์ด๋‹ค. Observer pattern, ๊ทธ๋ฆฌ๊ณ  ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” Object.defineProperty, proxy ๋“ฑ์„ ์†Œ๊ฐœํ•˜๋ฉด์„œ ๊ฐ„๋‹จํ•œ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์‹ค๋ฌด์—์„œ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ํ•œ ๋ฒˆ์”ฉ ๋”ฐ๋ผ ํ•ด ๋ณด๋ฉด ์ข‹์€ ํ•™์Šต์ด ๋  ๊ฒƒ์ด๋‹ค.

    How to Make your React App a Progressive Web App(PWA)

    React ์•ฑ์„ PWA๋กœ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ๊ณผ์ •์„ ๋‹จ๊ณ„๋ณ„๋กœ ์„œ์ˆ ํ•œ ํŠœํ† ๋ฆฌ์–ผ์ด๋‹ค. PWA๋ฅผ ๋งŒ์ ธ๋ณด๊ณ  ์‹ถ์ง€๋งŒ ์–ด๋–ป๊ฒŒ ์‹œ์ž‘ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๋Š” ์ƒํƒœ์—์„œ ๊ธ€์„ ํ•œ๋ฒˆ ๋”ฐ๋ผ ํ•ด ๋ณด๋ฉด PWA์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ํŠœํ† ๋ฆฌ์–ผ์„ ๋”ฐ๋ผ ํ•˜์ง€ ์•Š๊ณ  PWA์™€ Service Worker์— ๋Œ€ํ•œ ์„ค๋ช…๋งŒ ์ฝ์–ด๋ณด์•„๋„ PWA์— ๋Œ€ํ•œ ๊ฐ์„ ์žก์„ ์ˆ˜ ์žˆ๋‹ค.

    ์ฝ”๋“œ์™€ ๋„๊ตฌ

    JS is weird

    JavaScript๋ฅผ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š” ์ด์ƒํ•œ ๋ฌธ๋ฒ• 25๊ฐœ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋‹ค.

    ์‹ฌ์‹ฌํ’€์ด๋กœ ํ’€์–ด๋ณด๊ณ  ์‹ค๋ฌด์—์„œ๋Š” ์ด์™€ ๊ฐ™์€ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ๋ฌธ๋ฒ•์„ ๊ฐ€๊ธ‰์  ์ง€์–‘ํ•ด์•ผ๊ฒ ๋‹ค.

    React Suite

    React Suite๋Š” ๊ธฐ์—…์šฉ ์ œํ’ˆ์„ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค. ์ข‹์€ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ์— ์ดˆ์ ์„ ๋‘์—ˆ๋‹ค. ๋งํฌ์™€ ๊ฐ™์ด ๊ฐ ์ปดํฌ๋„ŒํŠธ์˜ ๋””์ž์ธ ํ”„๋กœํ† ํƒ€์ž…๊ณผ ๋ช…์„ธ๋„ ์ œ๊ณตํ•œ๋‹ค.

    WEBRIX

    Bootstrap์ด๋‚˜ Material-UI์™€ ๊ฐ™์€ ์ปดํฌ๋„ŒํŠธ ํ”„๋ ˆ์ž„์›Œํฌ(๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)๋ฅผ ๋„์ž…ํ•ด ์›น์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด ์ดˆ๊ธฐ์— ๋น ๋ฅด๊ฒŒ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

    ํ•˜์ง€๋งŒ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์„ ํ•˜๋ ค๊ณ  ํ•˜๊ฑฐ๋‚˜, ์„œ๋น„์Šค๊ฐ€ ๋ฐœ์ „ํ•ด ์ž์ฒด์ ์ธ ๋””์ž์ธ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ ์œ„์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋„์ž…์ด ๋ถ€๋‹ด์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

    ๊ทธ๋ ‡๋‹ค๊ณ  ํ•˜๋‚˜๋ถ€ํ„ฐ ์—ด๊นŒ์ง€ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ž์ฒด์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ ๋˜ํ•œ ๋‚ญ๋น„์ ์ธ ๋ถ€๋ถ„์ด ์ƒ๊ธด๋‹ค.

    ์ด๋ฅผ ํ•ด๊ฒฐํ•ด ์ค„ ์ˆ˜ ์žˆ๋Š” ์†”๋ฃจ์…˜์ด ๋ฐ”๋กœ WEBRIX์ด๋‹ค.

    WEBRIX ๋Š” <Movable/>, <Stackable/>, <Pannable/>, <Resizable/>, <Poppable/>, <Scalable/>, <Scrollable/>, <Collapsible/> ์™€ ๊ฐ™์ด ๊ธฐ๋Šฅ์  ๋ถ€๋ถ„์— ํฌ์ปค์Šค ๋œ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค. ์„œ๋น„์Šค ๊ฐœ๋ฐœ์ž๋Š” ์ปดํฌ๋„ŒํŠธ์˜ presentaion ์ ์ธ ๋ถ€๋ถ„๋งŒ ์‹ ๊ฒฝ ์จ์„œ ๊ฐœ๋ฐœํ•˜๋ฉด ๋œ๋‹ค.

    wavesurfer.js

    Web Audio API์™€ CANVAS๋กœ audio๋ฆฌ์†Œ์Šค๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ณ  ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค.

    WinXP

    Windows XP ์šด์˜์ฒด์ œ์˜ ๋ช‡๊ฐ€์ง€ ๊ธฐ๋Šฅ๊ณผ ๊ฐ„๋‹จํ•œ ์•ฑ๋“ค์„ React์™€ hooks๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•œ ํ”„๋กœ์ ํŠธ์ด๋‹ค. ์œˆ๋„์šฐ์—์„œ ์นœ์ˆ™ํ•œ ์ธํ„ฐ๋ ‰์…˜์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ–ˆ๋Š”์ง€ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    macos-web

    ์ด๋ฒˆ์—” MacOS ์šด์˜์ฒด์ œ๋‹ค. Svelte๋กœ ์ž‘์„ฑ๋˜์—ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด MacOS์˜ ์ธํ„ฐ๋ ‰์…˜์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ–ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.