naver/fe-news λ‰΄μŠ€λ ˆν„° λ·°μ–΄ (비곡식)

λͺ©μ°¨
λͺ©μ°¨

    2023-06

    πŸ“š 링크 & 읽을 거리

    Reactμ—μ„œ View의 λ Œλ”λ§ 관심사 뢄리λ₯Ό μœ„ν•œ VAC νŒ¨ν„΄ μ†Œκ°œ

    UI κ°œλ°œμžμ™€ JS κ°œλ°œμžκ°€ ν˜‘μ—…ν•˜λŠ” 경우 JSXλ₯Ό ν•¨κ»˜ μˆ˜μ •ν•΄μ•Ό ν•˜λŠ” 일이 μ’…μ’… λ°œμƒν•œλ‹€. 이런 경우 μ½”λ“œ 좩돌이 λ°œμƒν•˜κ±°λ‚˜, λ‹€λ₯Έ κ°œλ°œμžκ°€ μž‘μ„±ν•œ μ½”λ“œλ₯Ό μˆ˜μ •ν•˜κΈ° μ–΄λ €μš΄ 일이 생길 수 μžˆλ‹€.

    VAC(View Asset Component) νŒ¨ν„΄μ€ λ·° 둜직과 JSX 개발 μ˜μ—­μ„ κ²©λ¦¬ν•¨μœΌλ‘œμ¨ μ΄λŸ¬ν•œ ν˜‘μ—… 문제λ₯Ό 쀄일 수 μžˆλŠ” νŒ¨ν„΄μ΄λ‹€. λ‹€μŒμ€ VAC νŒ¨ν„΄μ˜ ν•œ 예둜, μŠ€ν•€ λ°•μŠ€ κ΅¬ν˜„μ— ν•„μš”ν•œ λ·° λ‘œμ§μ„ 별도 μ»΄ν¬λ„ŒνŠΈλ‘œ κ²©λ¦¬ν•˜κ³ , UI ν‘œν˜„μ— ν•„μš”ν•œ 정보λ₯Ό props둜 VACμ—κ²Œ μ „λ‹¬ν•˜κ³  μžˆλ‹€:

    // View Component
    const SpinBox = () => {
        const [value, setValue] = useState(0);
    
        const props = {
            value,
            onDecrease: () => setValue(value - 1),
            onIncrease: () => setValue(value + 1),
        };
    
        return <SpinBoxView {...props} />;
    };
    
    // VAC
    const SpinBoxView = ({ value, onIncrease, onDecrease }) => (
      <div>
        <button onClick={onDecrease}>-</button>
        <span>{value}</span>
        <button onClick={onIncrease}>+</button>
      </div>
    );
    

    λΉ„μ¦ˆλ‹ˆμŠ€ 둜직과 View의 관심사λ₯Ό λΆ„λ¦¬ν•˜λŠ” μ—¬λŸ¬ κΈ°λ²•μ΄λ‚˜ νŒ¨ν„΄μ„ μ μš©ν–ˆμŒμ—λ„ μ—¬μ „νžˆ JSX κ΄€λ¦¬λ‘œ 인해 UI κ°œλ°œμžμ™€ JS κ°œλ°œμžκ°€ ν˜‘μ—…μ— 어렀움이 μžˆλ‹€λ©΄ VAC νŒ¨ν„΄μ„ κ²€ν† ν•΄ λ³΄λŠ” 것도 쒋을 λ“―ν•˜λ‹€.

    넀이버 ν…Œν¬ν†‘μ—μ„œ 글쓴이가 λ°œν‘œν•œ μ˜μƒλ„ μ‚΄νŽ΄ λ³Ό 수 μžˆλ‹€: https://tv.naver.com/v/23162062

    Best Practices and Design Patterns in React.js for High-Quality Applications

    React 앱을 ꡬ좕할 λ•Œ μ•Œκ³  있으면 μœ μš©ν•œ 섀계 방법듀과 νŒ¨ν„΄μ— λŒ€ν•΄ μ„€λͺ…ν•˜λŠ” 글이닀. ν”„λ‘œμ νŠΈλ₯Ό κΈ°λŠ₯ 기반 폴더 ꡬ쑰둜 ꡬ성, μž‘κ³  μ§‘μ€‘λœ μ»΄ν¬λ„ŒνŠΈλ₯Ό μœ μ§€, λͺ…ν™•ν•˜κ³  의미 μžˆλŠ” 이름을 μ‚¬μš©, μƒνƒœ 관리 및 API ν›… 뢄리 λ“± κΈ°λ³Έμ μ΄μ§€λ§Œ μœ μ΅ν•œ λ‚΄μš©λ“€μ„ 정리해 λ†“μ•˜λ‹€.

    Next.js λ‚˜ SSR κ΄€λ ¨λœ μ„€λͺ…은 μ—†μ§€λ§Œ React 앱을 λ§Œλ“€ λ•Œ ν•„μš”ν•œ 기본적인 λ‚΄μš©μ„ λ‹΄κ³  μžˆμ–΄μ„œ ν˜„μž¬ React둜 κ°œλ°œν•˜κ³  μžˆκ±°λ‚˜ κ°œλ°œν•  μ˜ˆμ •μ΄ μžˆλ‹€λ©΄ ν•œ 번쯀 읽어봐도 쒋을 것이닀.

    κ°œλ°œμžκ°€ μ•Œμ•„λ‘λ©΄ 쒋은 'μž¬ν˜„ κ°€λŠ₯ν•œ 예제' ν™œμš©λ²•

    쒋은 μ§ˆλ¬Έμ„ ν•˜λŠ” 것은 μ–΄λ ΅λ‹€. 쒋은 μ§ˆλ¬Έμ„ ν•΄μ•Ό 쒋은, μ›ν•˜λŠ” 닡변을 얻을 수 μžˆλ‹€. μ΄λŸ¬ν•œ 쒋은 μ§ˆλ¬Έμ„ ν•˜λŠ” 방법 μ€‘μ—λŠ” 'μž¬ν˜„ κ°€λŠ₯ν•œ 예제'λ₯Ό ν™œμš©ν•˜λŠ” 방법이 μžˆλ‹€. 'μž¬ν˜„ κ°€λŠ₯ν•œ 예제'λ₯Ό ν™œμš©ν•˜λ©΄ μ½”λ“œμ˜ λ§₯락과 상황을 μ •ν™•ν•˜κ³  μžμ„Έν•˜κ²Œ 전달할 수 μžˆλ‹€.

    이 κΈ€μ—μ„œλŠ” 'μž¬ν˜„ κ°€λŠ₯ν•œ 예제'λž€ 무엇인지, μ–΄λ–»κ²Œ λ§Œλ“€ 수 μžˆλŠ”μ§€μ— λŒ€ν•΄ μ„€λͺ…ν•œλ‹€. R ν”„λ‘œκ·Έλž˜λ° κ΄€λ ¨ 이야기가 ν›„λ°˜λΆ€μ— ν¬ν•¨λ˜μ–΄ μžˆμœΌλ‚˜, μ΄ˆλ°˜λΆ€λ§Œ 읽어 보아도 쒋을 λ“―ν•˜λ‹€.

    React from Another Dimension

    μ§€λ‚œ 5μ›” 9~11일 μ§„ν–‰λ˜μ—ˆλ˜ Remix Conf 2023μ—μ„œ Dan Abramov의 μ„Έμ…˜μœΌλ‘œ, λ…Έλž˜μ™€ 가사λ₯Ό κ²€μƒ‰ν•˜κ³  λ³Ό 수 μžˆλŠ” 개인 μ›Ή μ‚¬μ΄νŠΈλ₯Ό React ꡬ성 μš”μ†Œλ₯Ό μ‚¬μš©ν•΄ λ§Œλ“œλŠ” 과정을 닀룬닀. μ„Έμ…˜μ€ μ»€λ‹€λž€ 온라인 데λͺ¨μ™€ 같이 κ΅¬μ„±λ˜μ–΄ 있으며, κΈ°λŠ₯을 ν•œ κ°€μ§€μ”© μΆ”κ°€ν•΄ λ‚˜κ°€λ©΄μ„œ Reactκ°€ μ–΄λ–»κ²Œ ν™œμš©λ˜λŠ”μ§€λ₯Ό 싀무적 κ΄€μ μ—μ„œ μ „λ‹¬ν•œλ‹€.

    11 HTML best practices for login & sign-up forms

    HTML μ—˜λ¦¬λ¨ΌνŠΈμ™€ 속성을 μ •ν™•νžˆ μ‚¬μš©ν•˜λŠ” 것은 μ€‘μš”ν•˜λ‹€. μ •ν™•νžˆ μ‚¬μš©ν•œλ‹€λ©΄ λ§Žμ€ λΆ€λΆ„ λΈŒλΌμš°μ €μ˜ 도움을 받을 수 μžˆλ‹€.

    이 κΈ€μ—μ„œλŠ” λ‘œκ·ΈμΈμ„ μ˜ˆμ‹œλ‘œ ν•˜μ—¬ HTML μ—˜λ¦¬λ¨ΌνŠΈμ™€ 속성을 μ •ν™•νžˆ μ‚¬μš©ν•˜λŠ” 방법에 λŒ€ν•΄ μ„€λͺ…ν•œλ‹€.

    What's new in ECMAScript 2023

    이번 ECMAScript 2023에 λ„μž…λœ μƒˆ κΈ°λŠ₯듀을 μ†Œκ°œν•˜λŠ” 글이닀. 특히 μƒˆλ‘­κ²Œ μΆ”κ°€λœ λ°°μ—΄ λ©”μ„œλ“œλ₯Ό 톡해 λ”μš± 예츑 κ°€λŠ₯ν•œ μ½”λ“œ μž‘μ„±μ΄ κ°€λŠ₯ν•΄μ§„ 점이 λˆˆμ— λˆλ‹€. μƒˆλ‘œμš΄ κΈ°λŠ₯에 관심이 μžˆλ‹€λ©΄ 읽어보길 λ°”λž€λ‹€.

    μ£Όλ‹ˆμ–΄ 개발자λ₯Ό μœ„ν•œ μ—„μ²­ μ‰¬μš΄ TCP/IP 4계측 이야기

    TCP/IP 전솑 계측에 λŒ€ν•΄ 택배λ₯Ό 예둜 λ“€μ–΄ μ„€λͺ…ν•œλ‹€. λ‹€μŒ κΈ€λ‘œλŠ” μ£Όλ‹ˆμ–΄ 개발자λ₯Ό μœ„ν•œ TCP/IP μ£Όμš” ν”„λ‘œν† μ½œ μ•Œμ•„λ³΄κΈ°λ„ μžˆμœΌλ‹ˆ 관심 μžˆλ‹€λ©΄ μ΄μ–΄μ„œ 읽어보길 μΆ”μ²œν•œλ‹€.

    On commit messages

    ν”„λ‘œμ νŠΈκ°€ μ˜€λž«λ™μ•ˆ 성곡할 수 μžˆλŠ”μ§€λŠ” μ½”λ“œ μœ μ§€ λ³΄μˆ˜μ„±μ— 달렀 μžˆλ‹€κ³  해도 과언은 μ•„λ‹ˆλ‹€. 그런 λ©΄μ—μ„œ 컀밋 λ©”μ‹œμ§€λž€ 정말 μ€‘μš”ν•˜λ‹€. ν•˜λ‚˜μ˜ λͺ…ν™•ν•˜μ§€ μ•Šμ€ 컀밋 λ©”μ‹œμ§€κ°€ μ—¬λŸ¬ κ°œλ°œμžλ“€μ˜ μ‹œκ°„μ„ ν—ˆλΉ„ν•˜κ²Œ λ§Œλ“€κ³ , μ½”λ“œλ₯Ό λ³€κ²½ν•  수 μ—†κ²Œ λ§Œλ“€ μˆ˜λ„ μžˆλ‹€.

    λ‹€μ†Œ 였래된 κΈ€μ΄μ§€λ§Œ 이 글은 그런 컀밋 λ©”μ‹œμ§€μ˜ μ€‘μš”μ„±κ³Ό 컀밋 λ©”μ‹œμ§€λ₯Ό μ–΄λ–»κ²Œ μž‘μ„±ν•΄μ•Ό ν•˜λŠ”μ§€ 잘 μ„€λͺ…ν•˜κ³  μžˆλ‹€.

    λ¦¬μ•‘νŠΈ 곡식 λ¬Έμ„œ ν•œκΈ€ λ²ˆμ—­ (비곡식)

    졜근 λ¦¬λ‰΄μ–Όλœ React 곡식 λ¬Έμ„œμ˜ 비곡식 ν•œκΈ€ λ²ˆμ—­ μ‚¬μ΄νŠΈμ΄λ‹€. 원문과 λ²ˆμ—­μ„ ν•¨κ»˜ λ³Ό 수 μžˆλ„λ‘ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.

    Costly CSS Properties and How to Optimize Them

    μ„±λŠ₯상 λΉ„μš©μ΄ 많이 λ“œλŠ” CSS 속성과 이λ₯Ό μ΅œμ ν™”ν•˜λŠ” 방법을 μ„€λͺ…ν•˜λŠ” 글이닀. box-shadow, filter, border-radius 등이 λΉ„μš©μ΄ 많이 λ“œλŠ” λŒ€ν‘œμ μΈ 속성이고 이λ₯Ό κ°œμ„ ν•  수 μžˆλŠ” λ°©μ•ˆμ— λŒ€ν•΄ μ„€λͺ…ν•˜κ³  μžˆλ‹€.

    Will JavaScript Become the Most Popular WebAssembly Language?

    λΈŒλΌμš°μ €μ—μ„œ ν™•μž₯λ˜μ—ˆκΈ° λ•Œλ¬Έμ— JavaScriptκ°€ Wasm에 μžμ—°μŠ€λŸ½κ²Œ 적합할 것이라고 μ‰½κ²Œ μΆ”μΈ‘ν•  수 μžˆλ‹€. κ·ΈλŸ¬λ‚˜ μ›λž˜ Wasm은 κ°œλ°œμžκ°€ JavaScriptλ₯Ό 톡해 λΈŒλΌμš°μ €μ—μ„œ λ‹€λ₯Έ 언어와 μƒν˜Έ μž‘μš©ν•  수 μžˆλ„λ‘ μ»΄νŒŒμΌν•˜λŠ” κ²ƒμ΄μ—ˆλ‹€.

    ν˜„μž¬ μ„œλ²„ μ‚¬μ΄λ“œ Wasmλ₯Ό μœ„ν•œ μ—¬λŸ¬ λΉ„ λΈŒλΌμš°μ € λŸ°νƒ€μž„(Docker의 Wasm 지원 포함)이 μžˆλ‹€. ν•˜μ§€λ§Œ Wasm λͺ¨λ“ˆμ€ μ‹€μ œλ‘œ JavaScript λŸ°νƒ€μž„(예: V8) λ‚΄μ—μ„œ μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ—, Wasm의 λ²”μš© λŸ°νƒ€μž„ μ „ν™˜μ— 따라 JavaScriptμ™€μ˜ μ •λ ¬ λ˜ν•œ 계속 μ€‘μš”ν•  μˆ˜λ°–μ— μ—†λ‹€.

    πŸ•Ή νŠœν† λ¦¬μ–Ό

    How to draw any regular shape with just one JavaScript function

    μ‚Όκ°ν•¨μˆ˜μ™€ canvasλ₯Ό μ΄μš©ν•΄ μ‰½κ²Œ μ •λ‹€κ°ν˜•μ„ λ§Œλ“œλŠ” 방법을 μ†Œκ°œν•œλ‹€.

    μΆ”κ°€λ‘œ MDNμ—μ„œ 기쑴의 κΈ°μˆ λ¬Έμ„œλ₯Ό λ³΄μ™„ν•˜κΈ° μœ„ν•œ λΈ”λ‘œκ·Έλ₯Ό 5μ›”λΆ€ν„° μ‹œμž‘ν•˜μ˜€λ‹€.

    πŸ“¦ μ½”λ“œμ™€ 도ꡬ

    The Epic Stack

    μ΅œμ‹  μ›Ή κ°œλ°œμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” ν›Œλ₯­ν•œ 도ꡬ가 λ„ˆλ¬΄ λ§Žλ‹€. 이둜 인해 μ΅œμ‹  μ›Ή κ°œλ°œμ€ λ•Œλ‘œ μ§€μΉ˜κ²Œ λ§Œλ“€κΈ°λ„ ν•œλ‹€.

    μ΄κ²ƒμ˜ 쒋은 점은 λŒ€λΆ€λΆ„μ˜ 경우 잘λͺ»λœ 선택을 ν•˜κΈ°κ°€ μ–΄λ ΅λ‹€λŠ” 것이닀. μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬μΆ•ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆλŠ” λŒ€λΆ€λΆ„μ˜ ν”„λ ˆμž„μ›Œν¬μ™€ λ„κ΅¬μ˜ μž₯단점은 λŒ€λ‹€μˆ˜ μ•±μ˜ μ œμ•½ 쑰건에 λ§žλ‹€.

    κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³  μ—”μ§€λ‹ˆμ–΄λ“€μ€ 뢄석 λ§ˆλΉ„λ‘œ 인해 μ§€μ†μ μœΌλ‘œ 어렀움을 κ²ͺκ³  μžˆλ‹€. 이λ₯Ό μ–΄λ–»κ²Œ ν•΄κ²°ν•  수 μžˆμ„κΉŒ?

    React μƒνƒœκ³„μ˜ μ£Όμš” 인물 쀑 ν•œ λͺ…인 Kent C. DoddsλŠ” 였랜 κ²½ν—˜μ„ λ°”νƒ•μœΌλ‘œ νŒ€μ΄ 아이디어λ₯Ό 더 λΉ λ₯΄κ³  μ•ˆμ •μ μΈ 기반 μœ„μ—μ„œ ν”„λ‘œλ•μ…˜μ— μΆœμ‹œν•  수 μžˆλ„λ‘ λ„μ™€μ£ΌλŠ” ν”„λ‘œμ νŠΈ μŠ€νƒ€ν„°(Remix 기반)λ₯Ό κ³΅κ°œν–ˆλ‹€.

    Remix Conf μ„Έμ…˜λ„ 같이 μ°Έκ³ ν•΄ 보기 λ°”λž€λ‹€.

    μœ μ‚¬ν•œ Next.js 기반의 μ—”ν„°ν”„λΌμ΄μ¦ˆ boilerplate ν”„λ‘œμ νŠΈλ„ μžˆλ‹€.

    useHooks

    ui.dev νŒ€μ—μ„œ μ‚¬μš©ν•˜λŠ” React Hooksλ₯Ό λͺ¨μ•„λ‘” μ‚¬μ΄νŠΈμ΄λ‹€. μˆ˜μ‹­ μ—¬κ°œμ˜ Hooksλ₯Ό μ œκ³΅ν•œλ‹€. 직접 κ΅¬ν˜„ν•˜κΈ°μ—λŠ” 번거둜운 useClickAway와 같은 Hooks도 μžˆμœΌλ‹ˆ ν•œλ²ˆ μ‚΄νŽ΄λ³΄κΈΈ λ°”λž€λ‹€.

    CodeJar

    μ›Ήμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” μ½”λ“œ 에디터이닀. λ‹€μ–‘ν•œ ν”„λ‘œκ·Έλž˜λ° 언어와 색상 ν…Œλ§ˆλ₯Ό μ œκ³΅ν•œλ‹€.

    pretty-ts-errors

    pretty-ts-errors

    νƒ€μž…μ΄ λ³΅μž‘ν•΄μ§ˆμˆ˜λ‘ νƒ€μž… 슀크립트의 였λ₯˜λŠ” 읽기 νž˜λ“€μ–΄μ§„λ‹€. 사싀 λ‚΄κ°€ μ•Œκ³  싢은 것은 email: string이 λˆ„λ½λ˜μ—ˆλ‹€λŠ” 사싀뿐인데도 νƒ€μž…μŠ€ν¬λ¦½νŠΈ 였λ₯˜λŠ” ...으둜 μƒλž΅λœ κΈ΄ 였λ₯˜λ₯Ό 보여주기도 ν•œλ‹€.

    pretty-ts-errors ν”ŒλŸ¬κ·ΈμΈμ€ νƒ€μž… μ—λŸ¬μ˜ ν•΅μ‹¬λ§Œ μš”μ•½ν•΄μ„œ 보여쀀닀. vscodeμ—μ„œλ§Œ μ‚¬μš© κ°€λŠ₯ν•˜λ‹€.

    ts-pattern

    ts-pattern

    더 λ‚˜μ€ 더 μ•ˆμ „ν•œ 쑰건 처리λ₯Ό λ„μ™€μ£ΌλŠ” λΌμ΄λΈŒλŸ¬λ¦¬λ‹€.

    • νŒ¨ν„΄ 맀칭을 톡해 λ³΅μž‘ν•œ 쑰건을 ν•˜λ‚˜μ˜ κ°„κ²°ν•œ ν‘œν˜„μ‹μœΌλ‘œ ν‘œν˜„ν•  수 μžˆλ‹€.
    • μ½”λ“œκ°€ 더 μ§§μ•„μ§€κ³  더 읽기 μ‰¬μ›Œμ§„λ‹€.
    • Exhaustiveness checking을 톡해 μ‹€μˆ˜λ‘œ 빠트린 μΌ€μ΄μŠ€λ₯Ό μž‘μ•„μ€€λ‹€.