Bun: 빠르고 혁신적인 JavaScript 런타임Bun이란?
·
Frontend/Development
Bun이란?Bun은 2023년 9월에 1.0 버전이 출시된 JavaScript 런타임으로, Node.js의 드롭인(drop-in) 대체를 목표로 합니다.Bun은 Zig언어로 개발되었으며, 구글 Chrome의 V8 엔진 대신 Apple의 JavaScriptCore엔진을 사용합니다. 이로 인해 속도와 실행 최적화에 강점을 가집니다.V8과 JavaScriptCore의 차이점특징V8(Chrome)JavaScriptcore(Safari)실행 속도 최적화고성능 JIT(Just In Time) 컴파일러, 빠른 실행빠른 초기 실행, 경량화메모리 사용비교적 높은 메모리 사용량최적화된 메모리 관리호환성Node.js와의 높은 호환성Apple 생태계 중심 최적화왜 0.xx 버전은 주목받지 못했을까?Bun이 처음 등장한 0.x..
npm이 설치하지 않은 패키지를 실행할 수 있는 이유
·
Frontend/Dev Notes
유령 의존성이란?개발 하다 보면, 어떤 패키지는 package.json에 명시적으로 추가한 적이 없는데도 프로젝트에 사용할 수 있는 경우가 있습니다. 또는 npm install을 했을 때 예상보다 더 많은 패키지가 설치되는 경우가 있습니다. 이런 현상을 유령 의존성이라고 부릅니다.📌 유령 의존성이 발생하는 주요 원인직접 설치하지 않은 패키지가, 하위 패키지를 통해 설치되면서 마치 직접 의존하는 것처럼 보이는 경우패키지 매니저에 따라 의존성 트리가 다르게 구성되는 경우=> npm은 90개의 하위 폴더, pnpm은 9개의 하위 폴더가 생김 📌 예제 재현mkdir npm-test && cd npm-testnpm init -ynpm install react react-dom typescript eslintm..
React 18, 19: 새롭게 나온 Hook 소개
·
Frontend/Development
React는 매 업데이트마다 개발자의 생산성과 사용자 경험을 개선하기 위해 새로운 기능을 도입해왔습니다. 특히 React 18과 19에서는 비동기 작업 관리와 UI 반응성을 향상시키는 여러 Hook이 추가되었습니다. 이번 글에서는 useId, useTransition, 그리고 useOptimistic과 같은 최신 Hook을 살펴보고, 이를 통해 어떻게 효율적인 비동기 처리가 가능한지 탐구해 보겠습니다.useIduseId는 React 18에서 고유한 ID 생성을 위해 도입된 Hook입니다. 서버와 클라이언트에서 동일한 ID를 생성하여 렌더링의 일관성을 보장하며, 클라이언트-서버 간 불일치를 방지할 수 있습니다.아래는 useId를 사용하여 고유 ID를 생성하고, 폼의 label과 input을 연결하는 예제입..
빈 태그 사용을 피해야 하는 이유
·
Frontend/Dev Notes
웹접근성과 웹 표준을 지키며 개발하는 것은 모든 사용자에게 동등한 웹 경험을 제공하기 위해 필수적입니다. 이러한 원칙을 따르면서도, 간격 조정과 같은 디자인 목적으로 빈 태그(나 등)를 사용하는 경우가 종종 있습니다. 하지만 이런 실천은 웹접근성과 웹 표준을 저해할 수 있으며, 다음과 같은 이유로 권장되지 않습니다. 웹접근성 저해웹접근성은 모든 사용자가 웹 콘텐츠와 상호작용할 수 있게 하는 것을 목표로 합니다. 스크린 리더와 같은 보조 기술을 사용하는 사용자는 빈 태그로 인해 혼란을 겪을 수 있습니다. 이러한 태그들은 시각적으로는 보이지 않지만, DOM에는 존재하기 때문에 보조 기술이 불필요한 정보를 인식하게 만들 수 있습니다. 따라서, 빈 태그 사용은 중요한 정보의 전달을 방해하며 웹접근성을 저해할 ..
React Query에서 Non-null Assertion Operator 사용하기 좋은 방법일까?
·
Frontend/Dev Notes
Non-null Assertion Operator란 무엇인가?TypeScript에서 Non-null assertion operator (!)는 컴파일러에게 어떤 값이 null이나 undefined가 아님을 단언하는 방식입니다. 이 연산자는 변수 뒤에 !를 붙여 사용하며, 이를 통해 TypeScript의 엄격한 null 검사(strict null checks)를 우회할 수 있습니다. 이는 개발자가 해당 변수가 절대 null이나 undefined가 아닐 것이라는 확신이 있을 때 유용합니다. 간단한 사용예시let myVar: string | null = "Hello, TypeScript!";// myVar이 null이 아님을 단언하고 사용console.log(myVar!.toUpperCase()); 위 예제에..
똑똑한 컴포넌트, 어디까지가 좋을까?
·
Frontend/Dev Notes
문제 제기똑똑한 컴포넌트가 어디까지 똑똑해야 할지는 소프트웨어 개발의 중심 문제 중 하나입니다. 특히 MSA 환경에서 이 질문은 더욱 중요한데, 서비스를 가능한 잘게 쪼개는 전략이 효율적인 작업을 위한 핵심이 되기 때문입니다. 최소한의 컴포넌트로 기능을 분리하려는 시도는 깔끔하고 독립적인 코드베이스를 유지하는 데 도움이 됩니다. 그러나, 이러한 접근이 항상 만능은 아니라는 것을 실제 경험을 통해 깨달았습니다. 실전 경험예를 들어, 사용자의 이름을 표시하는 Username 컴포넌트를 개발하는 과정에서, 각각의 컴포넌트가 자체적으로 API를 호출하도록 설계했습니다. 이론적으로는 재사용성을 극대화하는 좋은 전략처럼 보였습니다.// Username 컴포넌트 예시function Username({ userId }..
끄적끄적 개발자
'개발/정보' 태그의 글 목록