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

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

    2022-01

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

    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์™œ ํ”„๋กœํ† ํƒ€์ž…์„ ์„ ํƒํ–ˆ์„๊นŒ?

    ํ”Œ๋ผํ†ค ์„ธ๊ณ„๊ด€์˜ ์˜ํ–ฅ์„ ๋ฐ›์•„ ๋งŒ๋“ค์–ด์ง„ ํด๋ž˜์Šค์™€ ๊ทธ ์„ธ๊ณ„๊ด€์— ์ •๋ฉด์œผ๋กœ ๋ฐ˜๋ฐ•ํ•˜๋ฉฐ ๋งŒ๋“ค์–ด์ง„ ํ”„๋กœํ† ํƒ€์ž…์„ ์ฒ ํ•™์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๋‹ค. ์ €์ž์˜ ์ด๋Ÿฐ ๋…ํŠนํ•œ ํ•ด์„์€ hoisting, this, lexical scope, prototype์„ ๋”์šฑ ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค€๋‹ค. ์ด ๊ธ€์„ ํ†ตํ•ด '์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” prototype์œผ๋กœ ์ƒ์†ํ•œ๋‹ค'๋ผ๋Š” ์ž˜๋ชป๋œ ํŽธ๊ฒฌ์„ ๋ฒ„๋ฆฌ๊ณ  ๋ณด๋‹ค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž˜ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๊ธธ ๋ฐ”๋ž€๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๊ผญ ์ฝ์–ด ๋ณด๊ธธ ์ ๊ทน ๊ถŒ์žฅํ•œ๋‹ค.

    The Future of Svelte (Interview with Rich Harris)

    '21/11์›”, Svelte ๊ฐœ๋ฐœ์ž์ธ Rich Harris๊ฐ€ Next.js ๊ฐœ๋ฐœ์‚ฌ์ธ Vercel๋กœ์˜ ์ด์ง์— ๋Œ€ํ•œ ๊นœ์ง ๋ฐœํ‘œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ด๋Š” Svelte ์ƒํƒœ๊ณ„์— ํฐ ๋‰ด์Šค์ผ ์ˆ˜๋ฐ–์— ์—†๋Š” ๊ฒŒ, Vercel์€ React ๊ธฐ๋ฐ˜์˜ Next.js๋ฅผ ๊ฐœ๋ฐœํ•ด์˜ค๊ณ  ์žˆ๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์ฃผ์š” ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

    ์™œ Vercel ํ•ฉ๋ฅ˜๋ฅผ ๊ฒฐ์ •ํ–ˆ์„๊นŒ? ๊ทธ๋ฆฌ๊ณ  Svelte์˜ ๋ฏธ๋ž˜๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋Š” ๊ฑธ๊นŒ?

    A hundred things I learned working on the react team

    Dan Abramov๊ฐ€ React ๊ฐœ๋ฐœํŒ€์˜ ์ผ์›์œผ๋กœ ์ผํ•˜๋ฉด์„œ ๋ฐฐ์šด ๋‚ด์šฉ๋“ค์„ 100๊ฐœ์˜ ํŠธ์œ— ์Šค๋ ˆ๋“œ๋กœ ์ •๋ฆฌํ•œ ๊ธ€์ด๋‹ค. ๊ธฐ์ˆ ์ ์ธ ๋‚ด์šฉ๊ณผ ํ•จ๊ป˜ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ, ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋“ฑ ๋‹ค์–‘ํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์—ฟ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    ์ผ๋ก€๋กœ 50๋ฒˆ์งธ ํŠธ์œ—์˜ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    50.ย naming is one of the most important decisions you will be doing. itโ€™s not just bikeshedding. give it appropriate time and effort. you will mess it up anyway though.

    [์ฐธ๊ณ ] ์ข€ ๋” ํŽธํ•˜๊ฒŒ ์ฝ๊ณ  ์‹ถ๋‹ค๋ฉด, ๋‹ค์Œ ๋งํฌ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋ผ. https://threadreaderapp.com/thread/1470613731071696896.html

    Enzyme is dead. Now what?

    React ํ…Œ์ŠคํŒ… ์œ ํ‹ธ๋ฆฌํ‹ฐ์ธ Enzyme์„ ์œ„ํ•œ ๋น„๊ณต์‹ React 17 ์–ด๋Œ‘ํ„ฐ ํ”„๋กœ์ ํŠธ enzyme-adapter-react-17 ๊ฐœ๋ฐœ์ž์ธ Wojciech Maj์˜ ๊ธ€๋กœ, ํ˜„์žฌ Enzyme์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  ์•ž์œผ๋กœ React 18๋กœ ์ด๋™์„ ๊ณ ๋ คํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ์™œ Enzyme ์ด์™ธ์˜ ๋‹ค๋ฅธ ๋Œ€์ฒด์žฌ๋ฅผ ๋‹น์žฅ ์ฐพ์•„์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์–˜๊ธฐํ•œ๋‹ค.

    ์ž์‹  ๋˜ํ•œ ์ธ๊ธฐ ์žˆ๋Š” ๋‹ค์ˆ˜์˜ React ํ”„๋กœ์ ํŠธ(React-PDF,ย React-Calendar, React-Date-Picker ๋“ฑ)๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๊ณ , Enzyme ๊ธฐ๋ฐ˜์˜ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์ง€๋งŒ Enzyme์˜ React 17 ๊ณต์‹ ์ง€์›์„ ์œ„ํ•œ PR์ด ์˜ค๋žซ๋™์•ˆ ๋จธ์ง€ ๋˜์ง€ ์•Š๊ณ  ์žˆ๋‹ค๋Š” ์ ๊ณผ React 18 ์ง€์›์„ ์œ„ํ•ด์„œ๋Š” ์–ด๋Œ‘ํ„ฐ ์ฐจ์›๋งŒ์˜ ์ˆ˜์ •์œผ๋กœ ํ•ด๊ฒฐ๋  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์„ ๊ทผ๊ฑฐ๋กœ ๋“ค๊ณ  ์žˆ๋‹ค.

    Blogged Answers: A (Mostly) Complete Guide to React Rendering Behavior

    Redux maintainer์ธ Mark Erikson์ด React Rendering์— ๋Œ€ํ•ด ์ •๋ฆฌํ•œ ๊ธ€์ด๋‹ค. ๋น„๊ต์  ์ž์„ธํ•œ ์„ค๋ช…์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด, React Rendering ๊ณผ์ •์— ๋Œ€ํ•ด, ๊ทธ๋ฆฌ๊ณ  ์„ฑ๋Šฅ ์ตœ์ ํ™”์— ๋Œ€ํ•ด ๋ณด๋‹ค ๋†’์€ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•œ ์‚ฌ๋žŒ์€ ์ฝ์–ด๋ณด๊ธธ ์ถ”์ฒœํ•œ๋‹ค.

    Why TurboRepo Will Be The First Big Trend of 2022

    ํฌ๊ณ  ์ž‘์€ ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ ์ž ํ•  ๋•Œ monorepo๋ฅผ ๊ณ ๋ฏผํ•˜์ง€๋งŒ ์„ธํŒ…ํ•˜๊ณ  ์ตœ์ ํ™”ํ•˜๋Š”๋ฐ ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ์• ํ•ด์•ผ ํ•˜๋Š” ์žฅ๋ฒฝ์„ ๋งˆ์ฃผํ•˜๊ฒŒ ๋œ๋‹ค.

    Turborepo๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ JavaScript ๋ฐ TypeScript ์ฝ”๋“œ ๋ฒ ์ด์Šค์šฉ ๊ณ ์„ฑ๋Šฅ ๋นŒ๋“œ ์‹œ์Šคํ…œ์œผ๋กœ, ์บ์‹ฑ๊ณผ ์ž‘์—… ์Šค์ผ€์ค„๋ง ์ตœ์ ํ™”, CPU ๋ฆฌ์†Œ์Šค๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•œ ๋ณ‘๋ ฌ์  ์ฒ˜๋ฆฌ ๋“ฑ์˜ ๊ธฐ๋ฒ•์„ ํ†ตํ•ด ๋นŒ๋“œ ์†๋„๋ฅผ 85ํ”„๋กœ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  "Zero config"๋ฅผ ์ง€ํ–ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„ํŽธํ•œ ์„ค์ •์œผ๋กœ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

    ๋˜ํ•œ ์ „ํ†ต monorepo ๋„๊ตฌ๋“ค๊ณผ ์ฐจ์ด์ ์œผ๋กœ pipeline ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š”๋ฐ ์ด๊ฒƒ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์ž‘์—… ๊ด€๊ณ„ ๋ฐ ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด, ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด๋ฅผ ๋ณด๊ณ  ์ž‘์—…ํ๋ฆ„์„ ๋น ๋ฅด๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ์ด pipeline์— ์ •์˜๋œ ์ž‘์—…๋“ค์€ ์•ž์„œ ์–ธ๊ธ‰ํ•œ CPU์˜ ๋ฉ€ํ‹ฐ์ฝ”์–ด ํ”„๋กœ์„ธ์„œ๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•ด ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋น ๋ฅธ ๋นŒ๋“œ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

    React Conf 2021

    '21/12/9์ผ ์˜จ๋ผ์ธ์œผ๋กœ ์ง„ํ–‰๋˜์—ˆ๋˜ React Conf 2021์˜ ๋ชจ๋“  ์„ธ์…˜์ด ๊ณต๊ฐœ๋˜์—ˆ๋‹ค. ์ƒˆ๋กญ๊ฒŒ ๊ฐœ๋ฐœ ์ค‘์ธ React Forget (auto-memoizing ์ปดํŒŒ์ผ๋Ÿฌ)์™€ ์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜๋กœ React Native ์žฌ์ž‘์„ฑ ๊ณ„ํš ๋“ฑ์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๊ณต๊ฐœํ–ˆ๋‹ค.

    The State of CSS 2021

    2021๋…„ ์ „์„ธ๊ณ„ ๊ฐœ๋ฐœ์ž๋“ค์˜ CSS ํ˜„ํ™ฉ ์„ค๋ฌธ์กฐ์‚ฌ ๊ฒฐ๊ณผ๊ฐ€ ๊ณต๊ฐœ๋˜์—ˆ๋‹ค. Front-end ๊ฐœ๋ฐœ์ž๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” CSS ๊ธฐ๋Šฅ, ๊ธฐ์ˆ , ๋„๊ตฌ ๋“ฑ์„ ํ†ต๊ณ„๋กœ ๋ณผ ์ˆ˜ ์žˆ์–ด CSS ๊ด€๋ จ ๊ธฐ์ˆ ๊ณผ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐ์— ํฐ ์ฐธ๊ณ ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. ๋‹ค์Œ์€ ํ•ด๋‹น ์„ค๋ฌธ์กฐ์‚ฌ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ†ต๊ณ„ ์˜ˆ์‹œ๋‹ค.

    • CSS ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๊ด€๋ จํ•ด์„œ Tailwind CSS ์‚ฌ์šฉ๋ฅ ์ด ์ „๋…„๋Œ€๋น„ 13%๋กœ ํฐ ํญ์œผ๋กœ ์ƒ์Šนํ–ˆ๊ณ , Bootstrap์ด ์—ฌ์ „ํžˆ ์‚ฌ์šฉ๋ฅ  1์œ„๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋‹ค.
    • 98.7%์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ CSS์˜ Flexbox ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด ๋ณธ ์ ์ด ์žˆ๋‹ค๊ณ  ๋‹ตํ–ˆ๋‹ค.
    • 34%์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ CSS-In-JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ–‰๋ณตํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋‹ตํ–ˆ๋‹ค.

    ๋˜ํ•œ, ๋งค๋…„ ๋ฐœํ‘œํ•˜๋Š” JavaScript ํ˜„ํ™ฉ ์„ค๋ฌธ์กฐ์‚ฌ๋Š” 2022๋…„ 1์›”์— ๊ณต๊ฐœ๋œ๋‹ค๊ณ  ํ•œ๋‹ค.

    ํŠœํ† ๋ฆฌ์–ผ

    ์ฐจ์„ธ๋Œ€ CSS ๋ ˆ์ด์•„์›ƒ

    Flex์™€ Grid ๋ ˆ์ด์•„์›ƒ์ด ๋“ฑ์žฅํ•œ ์ง€ ๊ฝค ๋˜์—ˆ์ง€๋งŒ ๋Šฅ์ˆ™ํ•˜๊ฒŒ ์ž˜ ์‚ฌ์šฉํ•˜๊ธฐ๋Š” ์‰ฝ์ง€ ์•Š๋‹ค. ์ €์ž๋Š” ๋””์ž์ด๋„ˆ์™€ ๊ฐœ๋ฐœ์ž๋กœ ์ผํ•œ ๊ฒฝํ—˜์„ ํ†ตํ•ด ๋‹ค์Œ์˜ 2๊ฐœ ์‹œ๋ฆฌ์ฆˆ ๊ธ€์„ ํ†ตํ•ด Flex์™€ Grid์˜ ๊ฐ ์†์„ฑ๋“ค์„ ๊ทธ๋ฆผ์„ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๋ช…ํ•œ๋‹ค.

    How to create NFTs with JavaScript

    ๋Œ€์ฒด ๋ถˆ๊ฐ€๋Šฅ ํ† ํฐ(NFT, non-fungible token)์€ ์ตœ๊ทผ ๋ฏธ๋ž˜ ๊ธฐ์ˆ (๋””์ง€ํ„ธ ์ž์‚ฐ ๊ฑฐ๋ž˜)๋กœ ๋งŽ์€ ์ด๋“ค์˜ ๊ด€์‹ฌ์„ ๋ฐ›๊ณ  ์žˆ๋‹ค. ์ด ๊ธ€์€ JavaScript๋กœ NTF๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹จ๊ณ„๋ณ„๋กœ ์„ค๋ช…ํ•œ๋‹ค.

    Array.prototype.groupBy to the rescue!

    Array.prototype.GroupBy๊ฐ€ ๋“œ๋””์–ด TC39 stage3์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค. ์ด ๊ธ€์€ ๊ธฐ์กด์— reduce, filter, map ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์•ผ๋งŒ GroupBy๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์˜ˆ๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ Array.prototyp.groupBy๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค€๋‹ค.

    const items = [
      {
        type: "fruit",
        value: "๐ŸŽ",
      },
      {
        type: "fruit",
        value: "๐Ÿ‡",
      },
      {
        type: "vegetable",
        value: "๐Ÿฅ•",
      },
      {
        type: "vegetable",
        value: "๐ŸŒถ๏ธ",
      },
    ];
    items.groupBy(({ type }) => type);
    

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

    Mitosis: Write components once, run everywhere

    Mitosis๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ ์ฝ”๋“œ๋กœ React, Vue, Angular, Svelte ๋“ฑ ์—ฌ๋Ÿฌ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ปดํฌ๋„ŒํŠธ ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์žˆ๋‹ค. Playground๋ฅผ ํ†ตํ•ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    Pattens.dev

    Front-end ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์ด๋ณด๋‹ค ์ข‹์€ ์ฐธ๊ณ  ์‚ฌ์ดํŠธ๋Š” ์—†๋‹ค! Front-end์—์„œ ์ž์ฃผ ์ ‘ํ•˜๊ฒŒ ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด, ๋žœ๋”๋งํŒจํ„ด, ์„ฑ๋Šฅ ํŒจํ„ด์„ ์‹œ๊ฐ์ ์ธ ์ž๋ฃŒ, CodeSandbox ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค. ์ฑ…๊นŒ์ง€ ๋ฌด๋ฃŒ๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ์œผ๋‹ˆ ๊ผญ! ๋ณด๊ณ  ํ•™์Šตํ•ด ๋ณด๊ธฐ ๋ฐ”๋ž€๋‹ค.

    How to Write Shell Scripts in Node with Googleโ€™s zx Library

    zx๋Š” Shell Script๋ฅผ ์—ฌ๋Ÿฌ๋ถ„์ด ์นœ์ˆ™ํ•œ JavaScript/TypeScript๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋„ ์ƒ๋‹นํžˆ ์ง๊ด€์ ์ด๋ผ bash๋‚˜ zsh ์Šคํฌ๋ฆฝํŠธ์— ์ต์ˆ™ํ•˜์ง€ ์•Š๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ์œ ์šฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ์ด ๊ธ€์€ zx๋ฅผ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฐ„๋‹จํ•œ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ์˜ˆ์ œ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์žˆ์œผ๋‹ˆ ํ•œ๋ฒˆ ๋”ฐ๋ผ ํ•ด๋ณด๋ฉด zx์˜ ๊ฐ„ํŽธํ•จ์„ ๋ชธ์†Œ ์ฒดํ—˜ํ•ด ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

    // hello-world-typescript.ts
    
    import { $ } from "zx";
    
    void (async function () {
      await $`ls`;
    })();
    

    Drawing a Christmas Elf with HTML and CSS

    HTML์™€ CSS๋งŒ์„ ์ด์šฉํ•ด์„œ ํฌ๋ฆฌ์Šค๋งˆ์Šค ์—˜ํ”„๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ์ œ์ž‘ ๊ณผ์ •์˜ ๋น„๋””์˜ค์ด๋‹ค. gradients, masks, clip-path๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•˜๋‚˜ํ•˜๋‚˜ ๊ทธ๋ ค๊ฐ€๋Š” ๋ชจ์Šต์„ ๋ณด๋ฉด ๊ฐœ๋ฐœ ๋•ํ›„๋ž€ ๋ฌด์—‡์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.