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

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

    2022-07

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

    ES2022 Features!

    ์Šค์œ„์Šค ์ œ๋„ค๋ฐ”์—์„œ ์—ด๋ฆฐ 123๋ฒˆ์งธ ECMA ์ดํšŒ(General Assembly)์—์„œ๋Š” ECMA-262์˜ 13๋ฒˆ์งธ ์—๋””์…˜์ธ โ€˜ECMAScript 2022โ€™๊ฐ€ ์Šน์ธ๋˜์—ˆ๋‹ค.

    • .at() method on built-in indexables
    • RegExp Match Indices
    • Object.hasOwn
    • Error cause
    • Top-level await
    • Class field declarations
    • Ergonomic brand checks for private fields

    [์ฐธ๊ณ ] ์ถ”๊ฐ€๋กœ ๋‹ค์Œ ๊ธ€๋„ ์ฐธ๊ณ ํ•ด ๋ณด๋ฉด ์ข‹๋‹ค.

    Svelte Origins: A JavaScript Documentary

    ๊ฐœ๋ฐœ์ž ๊ตฌ์ธ ํ”Œ๋žซํผ์„ ์„œ๋น„์Šคํ•˜๋Š” OfferZen์—์„œ ์šด์˜ ์ค‘์ธ YouTube ์ฑ„๋„์—์„œ๋Š” ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ, ๋„๊ตฌ ๋“ฑ์— ๋Œ€ํ•œ ๊ธฐ์›(Origins)์— ๋Œ€ํ•œ ๋‹คํ๋ฉ˜ํ„ฐ๋ฆฌ๋ฅผ ๊ณต๊ฐœํ•˜๊ณ  ์žˆ๋‹ค.

    ์ด ์˜์ƒ์—์„œ๋Š” Svelte ๊ฐœ๋ฐœ์ž์ธ Rich Harrison๋Š” ์ €๋„๋ฆฌ์ฆ˜์„ ๊ณต๋ถ€ํ•˜๋‹ค, 2008๋…„ ๋Ÿฐ๋˜์˜ ๊ธˆ์œต ๊ด€๋ จ ์ถœ๊ฐ„๋ฌผ์„ ๋ฐœํ–‰ํ•˜๋Š” ํšŒ์‚ฌ์— ์ฒซ ์ทจ์—…์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, 2008๋…„ ๊ธˆ์œต์œ„๊ธฐ๋กœ ์ธํ•ด ์ผํ•˜๊ธฐ ์‹œ์ž‘ํ•œ ์ฒซ ๋ช‡ ๋‹ฌ๊ฐ„ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ํ•ด๊ณ ๋˜๋Š” ๊ฒƒ์„ ์ง์ ‘ ๋ชฉ๊ฒฉํ•˜๋ฉด์„œ๋ถ€ํ„ฐ ์Šค์Šค๋กœ๊ฐ€ ์ข€ ๋” ๊ณ ์šฉ๋˜๊ธฐ์— ๋งค๋ ฅ์ ์ธ ์‚ฌ๋žŒ์ด ๋˜๊ธฐ ์œ„ํ•ด, ๋ณด๋‹ค ๊ธฐ์ˆ ์  ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ ํ•ฉํ•œ ์‚ฌ๋žŒ์ด ๋˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ–ˆ๋‹ค๊ณ  ๋งํ•œ๋‹ค.

    ๋ช‡ ๋…„ ๋’ค ํšŒ์‚ฌ์—์„œ ์•„์ฃผ ๋ฒ ์ด์งํ•œ HTML ์ž‘์—…์ด ํ•„์š”ํ–ˆ์„ ๋•Œ ์ž์‹ ์ด ๊ฐ€์žฅ ์ž˜ ์ค€๋น„๋˜์–ด ์žˆ์—ˆ๊ณ , ๊ทธ๋ ‡๊ฒŒ ๊ฐœ๋ฐœ์ž๋กœ์จ ์ปค๋ฆฌ์–ด๊ฐ€ ์‹œ์ž‘๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค. Svelte์— ๊ผญ ๊ด€์‹ฌ์ด ์—†๋”๋ผ๋„ ๊ฐœ๋ฐœ์  ๊ด€์ ์—์„œ ํฅ๋ฏธ ์žˆ๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ๋“ค์ด ๋งŽ์•„ ์žฌ๋ฏธ์žˆ๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    [์ฐธ๊ณ ] ์ถ”๊ฐ€๋กœ Tailwind์— ๋Œ€ํ•œ ์˜์ƒ๋„ ์žฌ๋ฏธ์žˆ๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    Front-end Frameworks Popularity

    React๋Š” ํ˜„์žฌ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” Front-end ํ”„๋ ˆ์ž„์›Œํฌ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ๋Š” ๋‹ค์–‘ํ•œ ์†Œ์Šค(StackOverflow trend, ๊ฐ์ข… ๊ฐœ๋ฐœ์ž ์„ค๋ฌธ์กฐ์‚ฌ, ํŠธ์œ„ํ„ฐ ์–ธ๊ธ‰๋Ÿ‰ ๋“ฑ)๋“ค์„ ํ†ตํ•ด ๊ทธ๋Ÿฌํ•œ โ€˜์‚ฌ์‹คโ€™์„ ๋ณด์—ฌ์ค€๋‹ค.

    JSConf Budapest 2022

    ์ง€๋‚œ 6์›” 2,3์ผ ์ดํ‹€๊ฐ„ ์ง„ํ–‰๋˜์—ˆ๋˜ JSConf Budapest ๋ฐœํ‘œ ์˜์ƒ์ด๋‹ค. ์ฝ”๋กœ๋‚˜๋กœ ์ธํ•ด 2๋…„๊ฐ„ ์—ด๋ฆฌ์ง€ ๋ชปํ–ˆ๋‹ค๊ฐ€ ์˜ค๋žœ๋งŒ์— ์˜คํ”„๋ผ์ธ์—์„œ ์ง„ํ–‰๋˜์—ˆ๋‹ค. ๋‹ค์ฑ„๋กœ์šด ์„ธ์…˜๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, 2๋…„๊ฐ„์˜ ํŒ๋ฐ๋ฏน์œผ๋กœ ์ธํ•œ ์—ฌํŒŒ ๋•Œ๋ฌธ์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ •์‹ ๊ฑด๊ฐ•๊ณผ ์ŠคํŠธ๋ ˆ์Šค ๋“ฑ์— ๋Œ€ํ•œ ์„ธ์…˜๋“ค์ด ๋ˆˆ์— ๋ˆ๋‹ค.

    ์˜คํ”„๋ผ์ธ ์ฝ˜ํผ๋Ÿฐ์Šค ์ฐธ์—ฌ์— ๋ชฉ๋งˆ๋ฆ„์ด ์žˆ๋‹ค๋ฉด, ์กฐ๊ธˆ์ด๋‚˜๋งˆ ๊ทธ ๊ฐˆ์ฆ์„ ํ•ด์†Œํ•ด ์ค„ ๊ฒƒ์ด๋‹ค.

    Web browsers over the last 28 years

    ์ง€๋‚œ 6์›” 15์ผ Internet Explorer๊ฐ€ ๋“œ๋””์–ด ์ž‘๋ณ„์„ ๊ณ ํ–ˆ๊ณ , ๊ตญ๋‚ด ๊ฐœ๋ฐœ์ž์˜ ๋ฌ˜๋น„ ์„ค์น˜ ์กฐํฌ๋Š” ์ „ ์„ธ๊ณ„์ ์ธ ํ™”์ œ๊ฐ€ ๋˜๊ธฐ๋„ ํ–ˆ์—ˆ๋‹ค. ๋Œ€์ค‘์ ์ธ ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋“ฑ์žฅํ•œ ์ด๋ž˜๋กœ ์ˆ˜๋งŽ์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋“ฑ์žฅํ–ˆ๋‹ค ์‚ฌ๋ผ์ง€๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ–ˆ๋‹ค. ์ด ์˜์ƒ์€ 1994๋…„~2022๋…„๊นŒ์ง€์˜ ๋ธŒ๋ผ์šฐ์ € ๋ณ„ ์ ์œ ์œจ ๋ณ€ํ™”๋ฅผ ํ†ตํ•œ ํฅ๋ง์„ฑ์‡ ๋ฅผ ํ›‘์–ด๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

    [์ฐธ๊ณ ] ๋ธŒ๋ผ์šฐ์ €์˜ ์—ญ์‚ฌ์— ๋Œ€ํ•ด ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ๋‹ค์Œ ๋งํฌ๋“ค์„ ์ฐธ๊ณ ํ•˜๋ผ.

    WebKit Features in Safari 16 Beta

    ํฌ๋กฌ์ด ๋Œ€์„ธ ๋ธŒ๋ผ์šฐ์ €์ด์ง€๋งŒ Safari๋„ ๊ทธ์— ๋ชป์ง€์•Š๊ฒŒ ๋งŽ์€ ๋ฐœ์ „์ด ์žˆ์—ˆ๋‹ค. ํŠนํžˆ ์ด๋ฒˆ Safari 16์—์„œ๋Š” 162๊ฐœ์˜ feature๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.
    HTML / CSS / Web Inspector / Web API / JavaScript ๊ทธ๋ฆฌ๊ณ  WebAssembly / Security and privacy ๋“ฑ, ๋‹ค์–‘ํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.
    ์ž์„ธํ•œ ๋ถ€๋ถ„์€ WWDC์—์„œ ์†Œ๊ฐœ๋œ ์˜์ƒ์„ ์ฐธ๊ณ ํ•˜๊ธฐ ๋ฐ”๋ž€๋‹ค.

    ํ† ์Šค ๊ฐœ๋ฐœ์ž ์ฝ˜ํผ๋Ÿฐ์Šค SLASH 22

    ํ† ์Šค์˜ ๊ฐœ๋ฐœ ๊ฒฝํ—˜์„ ์•Œ๋ ค์ฃผ๋Š” ์˜จ๋ผ์ธ ์„ธ์…˜์ด 6์›” 8์ผ ~ 6์›” 10์ผ 3์ผ๊ฐ„ ์—ด๋ ธ๋‹ค. ์žฌ๋ฏธ์žˆ๋Š” ์ฃผ์ œ๊ฐ€ ๋งŽ์•˜๋Š”๋ฐ ๊ทธ์ค‘์—์„œ UX, Front-end์— ๊ด€๋ จ ์žˆ๋Š” ์ฃผ์ œ ๋ช‡ ๊ฐ€์ง€๋งŒ ๊ธฐ์ˆ ํ–ˆ๋‹ค. ํ•œ๋ฒˆ ์‚ดํŽด๋ณด๊ธฐ ๋ฐ”๋ž€๋‹ค.

    ํ† ์Šค์—์„œ์˜ ์‹œ๊ฐ„์„ ๋Œ์•„๋ณด๋ฉฐ

    ํ† ์Šค์—์„œ ์ผํ–ˆ๋˜ 2๋…„ ๋ฐ˜์˜ ์ž…์‚ฌ ๊ฒฝํ—˜์„ ๊ธฐ์ˆ ํ•œ ๊ธ€์ด๋‹ค. ํ† ์Šค๋Š” ๋‹ค๋ฅธ ๊ธฐ์—…๋ณด๋‹ค ์–ด๋–ป๊ฒŒ ์ผ์„ ๋” ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€๋ถ€ํ„ฐ ์„ฑ์žฅํ•˜๋ฉด์„œ ๊ฒช์€ ํ† ์Šค ์กฐ์ง์˜ ๋ฌธ์ œ์ ์„ ์–ด๋–ค ์‹์œผ๋กœ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ”๋Š”์ง€๋„ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค. ์กฐ์ง๊ด€๋ฆฌ์™€ ์„ฑ์žฅ์— ๊ด€์‹ฌ ์žˆ๋Š” ๋ถ„์ด๋ผ๋ฉด ํ•œ ๋ฒˆ ์ฝ์œผ๋ฉด ์ข‹์€ ๊ธ€์ด๋‹ค.

    ๋‚ด๊ฐ€ ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ํ•™์Šตํ•œ ๋ฐฉ๋ฒ•

    ๋ณด์•ˆ 7๊ฐœ์›”, ๋ฐฑ์—”๋“œ 1๋…„ 7๊ฐœ์›” ๊ฒฝํ—˜์ด ์žˆ๋Š” ๊ฒฝ๋ ฅ 3๋…„ ์ฐจ ๊ฐœ๋ฐœ์ž์˜ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ์ „ํ™˜๊ธฐ์ด๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ์–ด๋–ป๊ฒŒ ํ•™์Šตํ–ˆ๊ณ , ์–ด๋–ค ๊ฐ•์ขŒ๋ฅผ ํ†ตํ•ด ํ•™์Šต์„ ํ–ˆ๋Š”์ง€ ๊ธฐ์ˆ ํ•˜๊ณ  ์žˆ๋‹ค. ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๋‚˜ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์„ ์ฒ˜์Œ ์‹œ์ž‘ํ•˜์‹œ๋Š” ๋ถ„์ด๋ผ๋ฉด ์ฐธ๊ณ ํ•ด ๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

    Understanding the Closure Trap of React Hooks

    React 16.8 ๋ฒ„์ „๋ถ€ํ„ฐ Hook์ด ๋‚˜์˜จ ์ดํ›„๋กœ ์ด์ œ๋Š” ๋ณดํŽธ์ ์œผ๋กœ Hook์„ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ, ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด ์ง๋ฉดํ•˜๊ฒŒ ๋˜๋Š” ๊ณ ์ „์ ์ธ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋Š” closure trap of React Hooks์ด๋‹ค. ์ด ์•„ํ‹ฐํด์„ ํ†ตํ•ด์„œ ๋ฌธ์ œ๊ฐ€ ์–ด๋–ค ๊ฒƒ์ธ์ง€, ์™œ ๊ทธ๋ ‡๊ฒŒ ๋™์ž‘์„ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด FiberNode์™€ useEffect์˜ ๊ตฌํ˜„์„ ๋”ฐ๋ผ๊ฐ€๋ฉฐ ์›๋ฆฌ๋ฅผ ํŒŒ์•…ํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    ํŠœํ† ๋ฆฌ์–ผ

    AbortController๋กœ ์š”์ฒญ ์ทจ์†Œํ•˜๊ธฐ

    AbortContoller๋ฅผ ์ด์šฉํ•˜์—ฌ ์š”์ฒญ์„ ์ทจ์†Œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์†Œ๊ฐœํ•œ ๊ธ€์ด๋‹ค.
    ๋ธŒ๋ผ์šฐ์ €์—์„œ์˜ ์š”์ฒญ๊ณผ Node.js ์ŠคํŠธ๋ฆผ์˜ ์š”์ฒญ์„ ์ทจ์†Œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ๋‹ค.
    ๊ด€๋ จํ•ด์„œ AbortController is your friend ํŠœํ† ๋ฆฌ์–ผ ๊ธ€๋„ ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ํ•˜๊ธฐ ๋ฐ”๋ž€๋‹ค.

    Precise Timing With Web Animations API

    Web Animation API๋ฅผ ์ด์šฉํ•˜์—ฌ ์ •ํ™•ํ•œ ์‹œ์ ์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ํŠœํ† ๋ฆฌ์–ผ์„ ํ†ตํ•ด ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค.

    vanilla-javascript-gantt-chart

    Vanilla JS๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ„ํŠธ ์ฐจํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ํŠœํ† ๋ฆฌ์–ผ ์ด๋‹ค. ๋งŽ์€ ๊ฒƒ์„ ๊ณ ๋ คํ•ด์•ผํ•˜๋Š” ๋งŒํผ ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ๊ธ€์ด๋‹ค.

    CSS Speedrun

    ๊ฐ„๋‹จํ•œ CSS ์„ ํƒ์ž ํผ์ฆ์„ ํ’€์–ด๋ณด๋Š” ์‚ฌ์ดํŠธ์ด๋‹ค. ์ด 10 ๋ ˆ๋ฒจ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. Speedrun์ด๋ผ๋Š” ์ด๋ฆ„๋‹ต๊ฒŒ ๊ฐ ๋ ˆ๋ฒจ์„ ํ†ต๊ณผํ•˜๋Š”๋ฐ ์–ผ๋งˆ์˜ ์‹œ๊ฐ„์„ ์†Œ๋ชจํ–ˆ๋Š”์ง€๋„ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    Google JavaScript Interview With A Frontend Engineer

    ๋ชจ์˜ Google JavaScript ์ธํ„ฐ๋ทฐ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ์˜์ƒ์ด๋‹ค. promiseAll, deepEquals, getTimer์— ๋Œ€ํ•ด ์ธํ„ฐ๋ทฐ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

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

    JSON HERO

    JSON ์†์— ์ˆจ์–ด ์žˆ๋Š” ์ด๋ฏธ์ง€, ๋‚ ์งœ, ์ƒ‰์ƒ ๋“ฑ์„ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ตฌ์กฐํ™”๋œ JSON๋„ ์‰ฝ๊ฒŒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

    • vscode extension ๋„ ์žˆ์–ด์„œ VS Code์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    Clipdrop Remove Background

    ์‚ฌ์ง„์˜ ๋ฐฐ๊ฒฝ์„ ๋‹จ ํ•œ ๋ฒˆ์˜ ํด๋ฆญ๋งŒ์œผ๋กœ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ์˜จ๋ผ์ธ ํˆด์ด๋‹ค.

    Timeline JS

    ํƒ€์ž„ ๋ผ์ธ์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ์Šคํ† ๋ฆฌ๋ฅผ ๋‹ด๋Š” ํƒ€์ž„๋ผ์ธ์„ ๊ฐ„๋‹จํžˆ ๋งŒ๋“ค๊ณ ์ž ํ•œ๋‹ค๋ฉด ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ ๋ฐ”๋ž€๋‹ค.

    Fastify V4.2

    ๊ฐ€์žฅ ๋น ๋ฅด๊ณ  ์ ์€ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ง€ํ–ฅํ•˜๋Š” ์›น ํ”„๋ ˆ์ž„์›Œํฌ์ธ Fastify๊ฐ€ 4 ๋ฒ„์ „์ด ๋ฆด๋ฆฌ์Šค๋๋‹ค. V3์—์„œ ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ์žฅ์ ์„ Break Change์™€ ์„ฑ๋Šฅ ์ €ํ•˜ ์—†์ด ๊ฐœ๋ฐœํ•œ ํŒ€์˜ ์—ญ๋Ÿ‰์ด ๋Œ€๋‹จํ•˜๋‹ค.

    ์ตœ๊ทผ v4.2๊ฐ€ ๊ณต๊ฐœํ–ˆ๋‹ค. https://github.com/fastify/fastify/releases/tag/v4.2.0