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

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

    2020-07

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

    Off The Main Thread

    JavaScript๋Š” "๋‹จ์ผ ์Šค๋ ˆ๋“œ"๋กœ ์‹คํ–‰๋˜๋ฉฐ, ์ด๋Š” ๊ณง ํ•œ ๊ฐœ์˜ ์ฝœ ์Šคํƒ(call stack)๊ณผ ํ•œ ๊ฐœ์˜ ๋ฉ”๋ชจ๋ฆฌ ํž™(memory heap)์ด ์กด์žฌํ•จ์„ ์˜๋ฏธํ•œ๋‹ค.

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

    ๋ฐ”๋กœ ๋ชจ๋“  ์ž‘์—…์„ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค. UI ๊ด€๋ จ ์ž‘์—…์ด ์•„๋‹ˆ๋ผ๋ฉด, ๋„ค์ดํ‹ฐ๋ธŒ ํ‘œ์ค€ API์ธ "Web Workers"๋ฅผ ์‚ฌ์šฉํ•ด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ๋ฐ–์—์„œ JavaScript๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ๊ฐ€๋Šฅํ•œ ํ•œ ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ์ด๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ํ•„์š”์„ฑ์„ ์–ธ๊ธ‰ํ•˜๋Š” ๋‚ด์šฉ์˜ ๊ธ€์ด๋‹ค.

    JavaScript Visualized

    ๋‹ค์Œ์˜ 7๊ฐœ ์ฃผ์ œ๋กœ ๊ตฌ๋ถ„๋œ ์ด ์‹œ๋ฆฌ์ฆˆ๋Š” ์‹œ๊ฐ์  ์ด๋ฏธ์ง€์™€ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์‚ฌ์šฉํ•ด JavaScript์˜ ์–ธ์–ด์  ํŠน์„ฑ๊ณผ ํ•จ๊ป˜ ํ•ต์‹ฌ์ ์ธ ๊ฐœ๋…๋“ค์„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.

    ์–ด์„œ์™€, SSR์€ ์ฒ˜์Œ์ด์ง€? - ๋„์ž… ํŽธ (1/3 ์ง„ํ–‰ ์ค‘)

    ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ ์„œ๋น„์Šค์— Node.js ๊ธฐ๋ฐ˜์˜ SSR์„ ๋„์ž…ํ•œ ๊ฒฝํ—˜๊ธฐ๋ฅผ ์†Œ๊ฐœํ•˜๋Š” ์ฒซ๋ฒˆ์งธ ๊ธ€์ด๋‹ค.

    ์ด ๊ธ€์€ ์ด 3ํŽธ ์ค‘ ์ฒซ๋ฒˆ์งธ "๋„์ž… ํŽธ"์œผ๋กœ Node.js ๊ธฐ๋ฐ˜์˜ SSR์„ ๋ธ”๋กœ๊ทธ ์„œ๋น„์Šค์— ๋„์ž…ํ•œ ์ด์œ ์™€ ๋ฐฐ๊ฒฝ์— ๊ด€ํ•œ ๊ธ€์ด๋‹ค.

    angular.js๋ฅผ ์„ ํƒํ•˜๊ณ , Full Stack Developer๋ฅผ ์ง€ํ–ฅํ–ˆ๋˜ ๊ฐœ๋ฐœํŒ€์ด ์™œ? React๋ฅผ ์„ ํƒํ•˜๊ณ , FE ์ „๋ฌธ ์ธ๋ ฅ์„ ์œก์„ฑํ•˜๊ฒŒ ๋˜์—ˆ๋Š”์ง€๋ฅผ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค.

    ์ดํ›„ ๋‹ค๋ฃฐ "๊ฐœ๋ฐœํŽธ", "์šด์˜ํŽธ"์—์„œ๋Š” ๋Œ€ํ•œ๋ฏผ๊ตญ ๊ตญ๋ฏผ๋“ค์ด ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋Š” ๋ธ”๋กœ๊ทธ์˜ ํŠธ๋ž˜ํ”ฝ์„ ์ค€๋น„ํ•œ ๊ฒฝํ—˜๊ณผ ์šด์˜ํ–ˆ๋˜ ๋‚ด์šฉ์„ ๋‹ค๋ฃฐ ์˜ˆ์ •์ด๋ผ ๋‹ค์Œ ํŽธ์ด ๋” ๊ธฐ๋Œ€๋˜๋Š” ๊ธ€์ด๋‹ค.

    Profiling React.js Performance

    ๋ฆฌ์•กํŠธ์˜ Profiler API์™€ Interaction Tracing API, ๊ทธ๋ฆฌ๊ณ  ๋ธŒ๋ผ์šฐ์ €์˜ User Timing API์„ ์ด์šฉํ•˜์—ฌ ์˜ํ™” ์•ฑ์˜ ๋žœ๋”๋ง ์†๋„์™€ ์ธํ„ฐ๋ž™์…˜ ์†๋„๋ฅผ ์–ด๋–ป๊ฒŒ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค.

    ์ด ๊ธ€์—์„œ ๋‹ค๋ฃจ๋Š” API๋ฅผ ์ด์šฉํ•˜๋ฉด ํ›Œ๋ฅญํ•œ ํด๋ผ์ด์–ธํŠธ ๋žœ๋”๋ง ๋ชจ๋‹ˆํ„ฐ๋ง ํˆด๋„ ์ถฉ๋ถ„ํžˆ ๊ตฌ์ถ• ํ•  ์ˆ˜ ์žˆ๋‹ค.

    React Production Performance Monitoring ์—์„œ๋Š” ์ด๋ฅผ ์ด์šฉํ•œ Performance Monitoring ํˆด ๊ตฌ์ถ• ์•„์ด๋””์–ด๋ฅผ ์–ธ๊ธ‰ํ•˜๊ณ  ์žˆ๋‹ค.

    CSS ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ์„ฑ๋Šฅ ์•„๋Š” ๋งŒํผ ์ข‹์•„์ ธ์š”!

    Chrome DevTools์„ ํ†ตํ•ด ์• ๋‹ˆ๋ฉ”์ด์…˜์‹œ ์ ์šฉํ•˜๋Š” CSS ์†์„ฑ์— ๋”ฐ๋ผ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์–ด๋–ป๊ฒŒ ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š”์ง€๋ฅผ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ๋ณด์—ฌ์ฃผ๋Š” ๊ธ€์ด๋‹ค.

    ์ด ๊ธ€์„ ํ†ตํ•ด ๊ฐ„์ ‘์ ์œผ๋กœ๋‚˜๋งˆ Chrome DevTools์—์„œ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜๊ต ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋‹ค.

    ํŠœํ† ๋ฆฌ์–ผ

    ๋ฆฌ์•กํŠธ ํ›… MVVM ์‹œ๋ฆฌ์ฆˆ ๊ธ€ (์ง„ํ–‰ ์ค‘)

    ์ผ๋ฐ˜์ ์ธ ๋ฆฌ์•กํŠธ ํ›…์„ ์ด์šฉํ•œ ๊ฐœ๋ฐœ ํŠœํ† ๋ฆฌ์–ผ์ด๊ธฐ๋ณด๋‹ค๋Š” ๋ฆฌ์•กํŠธ์˜ ๋ชจ๋ธ-๋ Œ๋” ์‹œ์Šคํ…œ์„ ์ดํ•ดํ•˜๊ณ  ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ MVVM ๋ชจ๋ธ๋กœ ๊ตฌ์ถ•ํ•ด๋ณด๋Š” ํŠœํ† ๋ฆฌ์–ผ ์„ฑ๊ฒฉ์˜ ๊ธ€์ด๋‹ค.

    • 1๋ถ€์—์„œ๋Š” ๋ฆฌ์•กํŠธ์˜ ๋ชจ๋ธ-๋ Œ๋” ์‹œ์Šคํ…œ๊ณผ ์ฆ๋ถ„ ๋žœ๋”๋ง ์†Œ๊ฐœ๋ฅผ ์‹œ์ž‘์œผ๋กœ ๋ฆฌ์•กํŠธ ํ›…์˜ ๊ฐœ๋…์„ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค.
    • 2๋ถ€์—์„œ๋Š” MVVM ๋ชจ๋ธ์˜ ๋ฐ”์ธ๋”๋ฅผ ๋ฆฌ์•กํŠธ state๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ•˜๊ณ  ์ปค๋งจ๋“œ์˜ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด ๊ฐ€๋Š” ๊ฒƒ์„ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค.
    • 3 ~ 4 ๋ถ€์—์„œ๋Š” todo ์•ฑ์„ ๋งŒ๋“ค์–ด ๋ณด๋ฉด์„œ ๋ฆฌ์•กํŠธ ํ›…์˜ ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด์ ์„ ์‚ดํŽด๋ณธ๋‹ค.

    ์žฌ๋ฏธ์žˆ๋Š” ์ ์€ ์ด ๊ธ€์—์„œ๋Š” ๋ฆฌ์•กํŠธ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์™€ ํ›… ์‚ฌ์šฉ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด๋ฅผ ์ €์ž์˜ ๋…ํŠนํ•œ ์‹œ๊ฐ๊ณผ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ๋‹ค. ๋ฆฌ์•กํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ MVVM์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ด ํŠœํ† ๋ฆฌ์–ผ์„ ํ†ตํ•ด ๋ฆฌ์•กํŠธ๋ฅผ ๋” ์ž˜ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋˜๋ฉด ์ข‹๊ฒ ๋‹ค.

    ์ด ๊ธ€ ์™ธ์— ๋ฆฌ์•กํŠธ ํ›…์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ ๊ธ€์„ ์ฐธ์กฐํ•ด ๋ณด๊ธธ ๋ฐ”๋ž€๋‹ค.

    API ๊ณตํ†ตํ™” ๊ด€๋ จ ๊ธ€

    ์ฒซ๋ฒˆ์งธ ๊ธ€์€ "API ์˜ค๋ฅ˜๋ฅผ ์–ด๋–ป๊ฒŒ ์ค‘์•™์—์„œ ๊ด€๋ฆฌํ•˜๋Š”๊ฐ€?"์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ’€์–ด๊ฐ€๋Š” ๊ธ€์ด๋ผ๋ฉด ๋‘๋ฒˆ์งธ ๊ธ€์€ "React Custom Hook์„ ์–ด๋–ป๊ฒŒ ๋งŒ๋“œ๋Š”๊ฐ€?"์— ๋Œ€ํ•œ ๊ธ€์ด๋‹ค.
    ๋‘ ๊ธ€์˜ ๋ชฉ์ ์ด ๋‹ค๋ฅด์ง€๋งŒ API๋ฅผ ๊ณตํ†ตํ™”ํ•ด๊ฐ€๋Š” ๊ณผ์ •์€ ๋‘ ๊ธ€ ๋ชจ๋‘ ์ธ์ƒ ๊นŠ๋‹ค.

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

    127 Useful JavaScript Snippets You can understand in 30 seconds

    127 ๊ฐœ์˜ ์œ ์šฉํ•œ JavaScript ์ฝ”๋“œ ์กฐ๊ฐ ๋ชจ์Œ.
    127 ๊ฐœ๋ผ ๊ธด ๊ธ€์ผ๊ฑฐ๋ผ ์ƒ๊ฐํ•˜๊ฒ ์ง€๋งŒ. ์‰ฝ๊ฒŒ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ์š”๊ธดํ•˜๊ณ  ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ ์กฐ๊ฐ๋“ค์ด๋‹ค.

    One Div iPad Pro

    CSS๋งŒ์œผ๋กœ ๊ทธ๋ฆฐ iPad Pro ์˜ˆ์ œ ์ฝ”๋“œ

    audiomass.co

    ์„œ๋ฒ„ ๊ธฐ์ˆ  ์—†์ด ๋ธŒ๋ผ์šฐ์ € ์›น ๊ธฐ์ˆ ๋งŒ์œผ๋กœ ์Œ์„ฑ์„ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ์›น ์Œ์„ฑ ํŽธ์ง‘๊ธฐ.
    Web Audio API์™€ WebAssembly๋ฅผ ์ด์šฉํ•˜์—ฌ ์˜ค๋””์˜ค ํšจ๊ณผ ์ ์šฉ๊ณผ ํŽธ์ง‘์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค.

    ์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ชจ์Œ ๋ธ”๋กœ๊ทธ

    ์šฐ์•„ํ•œ ํ˜•์ œ๋“ค์˜ "์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค" ์ฝ”๋“œ๋ฆฌ๋ทฐ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์—ฌ ๊ณต๊ฐœํ•œ ์‚ฌ์ดํŠธ.
    FrontEnd์™€ ์ง์ ‘ ์ ์ธ ๊ด€๋ จ์€ ์—†์ง€๋งŒ ์ฝ”๋“œ๋ฅผ ๋ฐ”๋ผ๋ณด๋Š” ๊ฐœ๋ฐœ์ž๋กœ์„œ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์€ ์ด์•ผ๊ธฐ๋“ค๋กœ ๊ฐ€๋“ํ•˜๋‹ค.

    Draw.io VS Code Integration

    ๋‹ค์ด์–ด๊ทธ๋žจ์„ ๊ทธ๋ฆฌ๊ณ  ์‰ฝ๊ฒŒ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ธ draw.io์˜ VS Code Extension.
    ๊ฐœ๋ฐœ๊ณผ ํ•จ๊ป˜ ์„ค๊ณ„๋„ ์ด์ œ VS Code ๋‚ด์—์„œ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.