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

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

    2023-07

    ๐Ÿ“š ๋งํฌ & ์ฝ์„ ๊ฑฐ๋ฆฌ

    CommonJS is hurting JavaScript

    JavaScript๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋„˜์–ด ์„œ๋ฒ„๋กœ ํ™•์žฅ๋˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด์„œ, ํ˜„์žฌ ์ฝ”๋“œ์— ๋‹ค๋ฅธ ๋ชจ๋“ˆ์„ ํฌํ•จ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ–ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด 2009๋…„ Mozilla์˜ Kevin Dangoor๊ฐ€ CommonJS๋ผ๋Š” ํ‘œ์ค€์„ ์ œ์•ˆํ–ˆ๊ณ , ๋ชจ๋‘๊ฐ€ ์•Œ๊ณ  ์žˆ๋“ฏ์ด Node.js ์ฑ„ํƒ์œผ๋กœ ์ธํ•ด ์‚ฌ์‹ค์ƒ ํ‘œ์ค€์ด ๋˜์—ˆ๋‹ค.

    2015๋…„ ES6๋ฅผ ํ†ตํ•ด ํ‘œ์ค€ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์ธ ESM์„ ๋„์ž…ํ–ˆ์ง€๋งŒ, Node.js๋Š” CJS์™€ ESM ๋ชจ๋‘๋ฅผ ์ง€์›ํ•˜๋ฉฐ ์˜ค๋Š˜๋‚ ๊นŒ์ง€๋„ 2๊ฐœ์˜ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์ด ๊ณต์กดํ•˜๊ณ  ์žˆ๋‹ค.

    ๋งŽ์€ ์ด๋“ค์€ ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•˜๊ณ  ๋นŒ๋“œ ๋‹จ๊ณ„ ์—†์ด, ์„œ๋ฒ„์—์„œ ๊ทธ๋ฆฌ๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•˜์ง€ ์•Š์„๊นŒ?

    [์ฐธ๊ณ ] Deno์˜ ๊ฒฌํ•ด์™€๋Š” ๋ฐ˜๋Œ€๋กœ, Bun์€ 5/29์ผ ๋ฆด๋ฆฌ์Šค๋œ v0.6.5์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ CJS ์ง€์›์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

    npm-esm-vs-cjs

    npm ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ESM๊ณผ CJS์˜ ์ ์œ ์œจ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋กœ, ์ฃผ๋‹น 1M ๋‹ค์šด๋กœ๋“œ์™€ 500+๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์˜์กดํ•˜๋Š” ํŒจํ‚ค์ง€๋“ค์— ๋Œ€ํ•ด ๋ถ„์„ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

    '23/5์›” ๊ธฐ์ค€, CJS๊ฐ€ 70.7%๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋‹ค์–‘ํ•œ ESM ์ง€์› ๋ฐฉ์‹๋“ค์ด 29.3%๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ๋‹ค. ์ด ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅด๋ฉด, Deno์˜ ๋ฐ”๋žจ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ๋„ ์•„์ง ์šฐ๋ฆฌ๋Š” CJS ์„ธ์ƒ์— ์‚ด๊ณ  ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค.

    The Cost of JavaScript 2023

    Chrome ๋ธŒ๋ผ์šฐ์ € ํŒ€์—์„œ ์ผํ•˜๊ณ  ์žˆ๋Š” Addy Osmani์˜ ๋ฐœํ‘œ ์ž๋ฃŒ๋กœ, ์›น์—์„œ JavaScript๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์žˆ์–ด ๋•Œ๋•Œ๋กœ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์—†๋Š” ๋ฐฉ์‹์œผ๋กœ ์ „์†กํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๋Š” ๊ฒƒ, ํŠนํžˆ ๋ชจ๋ฐ”์ผ๊ณผ ์ €์‚ฌ์–‘ ๋ฐ์Šคํฌํ†ฑ์—์„œ ์–ด๋–ป๊ฒŒ JavaScript๊ฐ€ ๊ฐ€์žฅ ๋น„์‹ผ ๋ฆฌ์†Œ์Šค๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ทธ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•œ๋‹ค.

    ๋ฐœํ‘œ์—์„œ ๋‹ค๋ฃจ๋Š” ์ฃผ์š” ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    • ๋ฌด๊ฑฐ์šด JavaScript๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์ฃผ์š” ๋น„์šฉ
    • ํ‰๊ท ์ ์ธ ํ•˜๋“œ์›จ์–ด์™€ ๋ฌด๊ฑฐ์šด JavaScript๊ฐ€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ
    • JavaScript ๋น„์šฉ์„ ์ค„์ด๊ณ , ์žฅ์‹œ๊ฐ„ ์ž‘์—…์„ ์ค„์ด๋ฉฐ, ํ•ต์‹ฌ Web Vitals ์ง€ํ‘œ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ํŒ๊ณผ ์š”๋ น
    • ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ JavaScript ๋น„์šฉ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์‹œ๋„ํ•˜๋Š” ๊ฒƒ๋“ค
    • ์ƒˆ๋กœ์šด ์„ฑ๋Šฅ ์ง€ํ‘œ๊ฐ€ ์‚ฌ์šฉ์ž ์ƒํ˜ธ ์ž‘์šฉ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด JavaScript๋ฅผ ์ตœ์ ํ™”ํ•  ์œ„์น˜๋ฅผ ์ถ”๋ก ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋ฐฉ๋ฒ•

    ๋ฐœํ‘œ ์˜์ƒ์œผ๋กœ ๋‚ด์šฉ๋ณด๊ธฐ

    The Costs & Benefits of React Server Components

    ์ƒŒํ”„๋ž€์‹œ์Šค์ฝ”์—์„œ ์—ด๋ฆฐ Reactathon 2023 ์ฝ˜ํผ๋Ÿฐ์Šค์—์„œ ๋ฐœํ‘œ๋œ ์„ธ์…˜์œผ๋กœ, RSC๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด์˜ ๋ฐฉ์‹์ธ SPA โ†’ SSR ๋“ฑ์— ๋Œ€ํ•œ ๋ฐฐ๊ฒฝ์  ์†Œ๊ฐœ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•œ๋‹ค.

    ๊นŠ์€ ๋‚ด์šฉ์ด๋ผ๊ธฐ๋ณด๋‹จ, ๊ฐ๊ฐ์˜ ์ ‘๊ทผ ๋ฐฉ๋ฒ•๋“ค์— ๋Œ€ํ•œ ๊ฐœ๋…์ ์ธ ์ดํ•ด์™€ ํ•จ๊ป˜ RSC๊ฐ€ ์–ด๋–ค ๊ฒฝ์šฐ์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์„์ง€๋ฅผ ์„ค๋ช…ํ•œ๋‹ค.

    [์ฐธ๊ณ ] ๋ฐฐ๊ฒฝ์  ์„ค๋ช…์ด ํ•„์š” ์—†๋‹ค๋ฉด, ์•ž์„ ๊ฑด๋„ˆ๋›ฐ๊ณ  RSC๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ถ€๋ถ„๋ถ€ํ„ฐ ์ฐธ๊ณ ํ•˜๋ผ.

    Picking the Right Tool for Maneuvering JavaScript's Event Loop

    ์ž‘์—…์— ๋”ฐ๋ผ Event Loop ์ˆ˜๋ช… ์ฃผ๊ธฐ์˜ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์— ๊ฑธ์ณ ์ž‘์—…์„ ์˜ˆ์•ฝํ•˜๋Š” ๊ฒƒ์€ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋„๊ตฌ๋ฅผ ์„ค๋ช…ํ•œ๋‹ค.

    ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ JavaScript์˜ ์ด๋ฒคํŠธ ๋ฃจํ”„์— ๋Œ€ํ•ด ๊นŠ์ด ์ƒ๊ฐํ•˜์ง€ ์•Š๊ณ ๋„ ์ž˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ Œ๋”๋ง ํ”„๋กœ์„ธ์Šค ๋ฐ ๋น„๋™๊ธฐ ์ž‘์—…๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ํ™œ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด, ์ž‘๋™ ๋ฐฉ์‹๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ด๋ฅผ ๊ฐ€์žฅ ์ž˜ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋„๊ตฌ๋ฅผ ์•„๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•˜๋‹ค.

    Event Loop์˜ "์กฐ์ž‘"์ด๋ž€ "๋ฐ˜๋ณต์˜ ํŠน์ • ๋ถ€๋ถ„ ๋˜๋Š” ๋‹ค๋ฅธ ๋ฐ˜๋ณต์—์„œ ์‹คํ–‰๋˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์˜ˆ์•ฝํ•˜๋Š” ๊ฒƒ"์„ ์˜๋ฏธํ•˜๋ฉฐ, ์ƒํ™ฉ์— ๋”ฐ๋ผ ์–ด๋–ค ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ์ฝ”๋“œ์˜ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋‹ค.

    test262.fyi

    ECMAScript์˜ ๊ณต์‹ ํ…Œ์ŠคํŠธ ์…‹์ธ test262๋ฅผ ๋งค์ผ ๋‹ค์–‘ํ•œ JavaScript ์—”์ง„์„ ๋Œ€์ƒ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋ก  ํ™œ์šฉํ•  ์ผ์ด ๋งŽ์ง„ ์•Š๊ฒ ์ง€๋งŒ, ์—”์ง„๋“ค์˜ ํ˜ธํ™˜์„ฑ๊ณผ ํ‘œ์ค€์— ๋Œ€ํ•œ ์ค€์ˆ˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์ƒˆ๋กœ ๋ฐ”๋€ ๋„ค์ด๋ฒ„ ๋ฉ”์ธ ํ›”์ณ๋ณด๊ธฐ

    ๋„ค์ด๋ฒ„ PC ๋ฉ”์ธ์ด 5์›” 17์ผ, 3๋…„ ๋งŒ์— ์ƒˆ๋กญ๊ฒŒ ๊ฐœํŽธ๋˜์—ˆ๋‹ค. ๊ฐœํŽธ๋œ ๋ฐ์Šคํฌํ†ฑ์šฉ ๋ฒ„์ „์€ ์–ด๋–ค ๊ธฐ์ˆ ๋กœ ๋งŒ๋“ค์–ด์กŒ๋Š”์ง€ Chrome ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ๋ถ„์„ํ•œ๋‹ค.

    ์ด ๊ธ€์€ ๋„ค์ด๋ฒ„์˜ ๊ณต์‹์ ์ธ ์˜๊ฒฌ์€ ์•„๋‹ˆ๋ฉฐ, ์•„๋ž˜ ์ž‘๊ฐ€์˜ ๊ฒฝ๊ณ ๋„ ํ•จ๊ป˜ ์†Œ๊ฐœํ•œ๋‹ค.

    ๋„ค์ด๋ฒ„ ๋ฉ”์ธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง„์งœ ๊ทธ๋ƒฅ ์›น์‚ฌ์ดํŠธ๋งŒ ๋ณด๊ณ  ๋ฐฐ์šด ๊ฒƒ๋“ค๋งŒ ์ ์–ด๋‘”๋‹ค. ์‹ค์ œ ๊ฐœ๋ฐœ ๋‚ด์šฉ๊ณผ๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๋ฏธ๋ฆฌ ๊ฒฝ๊ณ ํ•œ๋‹ค.

    ๐Ÿ•น ํŠœํ† ๋ฆฌ์–ผ

    Hands on with the Node.js test runner

    Node.js๋Š” v18์— ์‹คํ—˜์ ์ธ ํ…Œ์ŠคํŠธ ๋Ÿฌ๋„ˆ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๊ณ , v20์— ์ •์‹์œผ๋กœ ๋ฆด๋ฆฌ์Šคํ–ˆ๋‹ค.

    ๋นŒํŠธ์ธ ํ…Œ์ŠคํŠธ ๋Ÿฌ๋„ˆ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ?

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

    ์ด ๊ธ€์€ ๋นŒํŠธ์ธ ํ…Œ์ŠคํŠธ ๋Ÿฌ๋„ˆ๋ฅผ ์‚ฌ์šฉํ•ด ํ•„์š”ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ๋‹ค.

    [์ฐธ๊ณ ] Deno์™€ Bun ๋˜ํ•œ ๋นŒํŠธ์ธ ํ…Œ์ŠคํŠธ ๋Ÿฌ๋„ˆ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.

    React Bits

    React๋ฅผ ํ™œ์šฉํ•œ ํŒจํ„ด, ๊ธฐ์ˆ , ํŒ ๋ฐ ํŠธ๋ฆญ์— ๋Œ€ํ•œ ๋ชจ์Œ์„ ์ฝ”๋“œ ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋ฉฐ, Gitbook ํฌ๋งท์œผ๋กœ๋„ ์ œ๊ณต๋œ๋‹ค.

    [์ฐธ๊ณ ] ํ•œ๊ตญ์–ด ๋ฒ„์ „ ๋งํฌ๋„ ์žˆ์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„ ๋ฒˆ์—ญ๋˜์ง€ ์•Š์€ ์ƒํƒœ์—ฌ์„œ ์˜๋ฌธ ๋ฒ„์ „์„ ํ™•์ธํ•˜๊ธฐ ๋ฐ”๋ž€๋‹ค.

    How I built my first Open Source project with ChatGPT and Next.js. 10k users in 24 hours ๐Ÿคฏ

    ํ•œ ๋ฒˆ๋„ ์ฝ”๋”ฉ์„ ํ•ด๋ณธ ๊ฒฝํ—˜์ด ์—†๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ChatGPT์™€ Next.js๋ฅผ ์‚ฌ์šฉํ•ด 24์‹œ๊ฐ„ ๋งŒ์— 1๋งŒ ๋ช…์˜ ์‚ฌ์šฉ์ž๋ฅผ ํ™•๋ณดํ•œ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•œ๋‹ค.

    LinkedIn Post Generator ํ”„๋กœ์ ํŠธ๋Š” LinkedIn์— ์–ด์šธ๋ฆฌ๋Š” ๊ธ€์„ ์ž๋™์œผ๋กœ ์นดํ…Œ๊ณ ๋ฆฌ์— ๋งž์ถฐ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด ์ฃผ๋ฉฐ, ํ•ด์‹œํƒœ๊ทธ, ์ด๋ชจํ‹ฐ์ฝ˜, URL ๋“ฑ๊ณผ ๊ฐ™์€ ์š”์†Œ๋ฅผ ๊ณ ๋ คํ•˜๋Š” ๊ณ ์œ ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ธ€์˜ ์™„์„ฑ๋„๋ฅผ ํ‰๊ฐ€ํ•ด ์ค€๋‹ค.

    What is REST?

    API ํ”Œ๋žซํผ ๋„๊ตฌ๋ฅผ ์„œ๋น„์Šคํ•˜๋Š” Postman์—์„œ ํŠธ์œ— ์Šค๋ ˆ๋“œ๋ฅผ ํ†ตํ•ด REST์˜ ๊ฐœ๋…์„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์†Œ๊ฐœํ•œ๋‹ค.

    [์ฐธ๊ณ ] ์ตœ๊ทผ ํŠธ์œ„ํ„ฐ์˜ ๋น„๋กœ๊ทธ์ธ ๊ฒŒ์‹œ๋ฌผ ์—ด๋žŒ ์ œํ•œ ์ ์šฉ์— ๋”ฐ๋ผ, ํŠธ์œ— ํ™•์ธ์„ ์œ„ํ•ด ๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค.

    Creating a seamless multi-language user interface in React

    react-i18next์„ ํ™œ์šฉํ•ด ๋‹ค๊ตญ์–ด๋ฅผ ์ง€์›ํ•˜๋Š” ๋‚ ์”จ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์–ด๋ณด์ž. ๋งŒ์•ฝ ๊ตญ์ œํ™”(i18n) ์„ค์ •์„ ๋๋‚ด๊ณ  ์ž๋™ํ™”๋ฅผ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ง€๋‚œ ํ˜ธ์— ์‹ค๋ฆฐ ๊ตญ์ œํ™”(i8n) ์ž๋™ํ™” ๊ฐ€์ด๋“œ๋„ ์ข‹์€ ์ฐธ๊ณ  ์ž๋ฃŒ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

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

    esm.sh

    URL(npm ํŒจํ‚ค์ง€ ๋˜๋Š” GitHub ์ €์žฅ์†Œ๋ฅผ ์ง€์ •)์—์„œ ESM์„ import ํ•  ์ˆ˜ ์žˆ๋Š” CDN ์„œ๋น„์Šค์ด๋‹ค.

    NPM ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์™€ GitHub ์ €์žฅ์†Œ์— ์žˆ๋Š” ๋ชจ๋“ˆ์„ import ํ•˜๋Š” ๊ฒฝ์šฐ, ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    // NPM ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ธฐ์ค€
    import React from "https://esm.sh/react@18.2.0"; 
    
    // GitHub ์ €์žฅ์†Œ ๊ธฐ์ค€
    import tslib from "https://esm.sh/gh/microsoft/tslib@2.5.0"; 
    

    ๋˜๋Š” ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋นŒ๋“œํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

    import { esm } from "https://esm.sh/build";
    
    const mod = await esm`
      export const foo: string = "bar";
    `;
    console.log(mod.foo); // "bar"
    

    [์ฐธ๊ณ ] ์œ ์‚ฌํ•œ ์„œ๋น„์Šค๋กœ๋Š” Skypack์ด ์žˆ๋‹ค.

    Anime.js

    Anime.js๋Š” ๊ฐ„๋‹จํ•˜๋ฉด์„œ๋„ ๊ฐ•๋ ฅํ•œ API๋ฅผ ๊ฐ–์ถ˜ ๊ฒฝ๋Ÿ‰ JavaScript ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ CSS, SVG, DOM ๋ฐ JavaScript ๊ฐ์ฒด์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•œ๋‹ค.

    ์‚ฌ์šฉ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋Œ€์ƒ ์š”์†Œ๋ฅผ ์ง€์ •ํ•œ ํ›„, ํ•„์š”ํ•œ ์†์„ฑ์„ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค. ๋ฌธ์„œ๊ฐ€ ์ž˜ ์ •๋ฆฌ๋˜์–ด ์žˆ์–ด ๋น„๊ต์  ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    import anime from 'animejs/lib/anime.es.js';
    
    anime({
      targets: 'div',
      translateX: 250,
      rotate: '1turn',
      backgroundColor: '#FFF',
      duration: 800
    });
    

    background-removal-js

    ์ด๋ฏธ์ง€์—์„œ ๋ฐฐ๊ฒฝ์„ ์ œ๊ฑฐํ•ด ์ฃผ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค. ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ๋น„์šฉ, ํ”„๋ผ์ด๋ฒ„์‹œ ๋ฌธ์ œ๋ฅผ ๊ฑฑ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ๋ฐ๋ชจ ํŽ˜์ด์ง€์—์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‹คํ–‰ํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    novel

    Notion ์Šคํƒ€์ผ์˜ WYSIWYG ์—๋””ํ„ฐ์ด๋‹ค. AI ๊ธฐ๋ฐ˜ ์ž๋™ ์™„์„ฑ์ด ์ง€์›๋œ๋‹ค. ๋ฐ๋ชจ ํŽ˜์ด์ง€์—์„œ ++๋ฅผ ์ž…๋ ฅํ•ด์„œ AI ์ž๋™์™„์„ฑ ๊ธฐ๋Šฅ์„ ์จ๋ณผ ์ˆ˜ ์žˆ๋‹ค.