Command Pattern
·
Frontend/JS Patterns
특정 작업을 실행하는 객체와메서드(아래의 placeOrder 등)를 호출하는 객체를 분리할 수 있습니다.class OrderManager() { constructor() { this.orders = [] } placeOrder(order, id) { this.orders.push(id) return `You have successfully ordered ${order} (${id})`; } trackOrder(id) { return `Your order ${id} will arrive in 20 minutes.` } cancelOrder(id) { this.orders = this.orders.filter(order => order.id !== id) retu..
peerDependencies 와 overrides 의 차이점(package management)
·
Computer Science/Terminology and Concepts
바로 요약peerDependencies - 다른 패키지들의 의존 관계도 만족되는 경우에만 peerDependencies 의 설정된 버전이 사용된다.overrides - 의존 관계와 상관없이 overrides 를 사용하면 항상 설정된 버전이 사용된다.패키지 관리에서 peerDependencies와 overrides의 차이는 버전 처리 및 강제 적용 방식에 관한 것입니다.아래는 그 차이에 대한 설명입니다:peerDependencies• 목적: 주로 패키지가 호스트 프로젝트(또는 다른 라이브러리)가 특정 버전의 의존성을 제공할 것으로 기대할 때 사용됩니다.• 버전 유연성: peerDependencies는 의존성을 자체적으로 설치하지 않습니다. 대신, 호스트 애플리케이션이 사용해야 하는 요구된 버전 범위를 명시..
[프론트엔드 성능 최적화 가이드] 4장 이미지 갤러리 최적화
·
Frontend/Perfomance Optimization
학습할 최적화 기법이미지 지연 로딩이미지 지연 로딩 라이브러리 적용레이아웃 이동 피하기화면상의 요소 변화로 레아이웃이 밀리는 현상리덕스 렌더링 최적화병목 코드 최적화메모이제이션 적용이미지 지연 로딩react-lazyload라는 라이브러리를 이용하여 빠르게 이미지 지연 로딩을 적용해 볼 것입니다.일반 컴포넌트도 이 안에 넣어 지연 로드할 수 있다는 것입니다. 이미지가 화면에 들어오는 시점보다 조금 더 미리 이미지를 불러와 화면에 들어온 시점에는 이미지가 준비되어 있도록 해야 합니다. 다행히 react-lazyload 라이브러리에서는 그렇게 할 수 있는 옵션을 제공해 주는데, 바로 offset이라는 옵션입니다.이 옵션에는 얼마나 미리 이미지를 로드할지 픽셀 값으로 넣어 줍니다. 레이아웃 이동 피하기레이..
[프론트엔드 성능 최적화 가이드] 3장 홈페이지 최적화
·
Frontend/Perfomance Optimization
Repository학습할 최적화 기법이미지 지연 로딩이미지 사이즈 최적화서버에 저장되어 있는 정적 이미지 최적화폰트 최적화커스텀 폰트 적용 최적화캐시 최적화불필요한 CSS 제거사용하지 않는 CSS 코드 제거이미지 지연 로딩네트워크를 확인할 때는 명확한 흐름을 파악할 수 있도록 네트워크에 throttling을 적용합니다. banner-video는 페이지에서 가장 처음으로 사용자에게 보이는 콘텐츠인데 가장 나중에 로드되면, 사용자가 첫 화면에서 아무것도 보지 못한 채로 오랫동안 머물게 되므로 사용자 경험에 좋지 않을 겁니다.동영상의 다운로드를 방해하는, 당장 사용되지 않는 이미지를 나중에 다운로드되도록 하여 동영상이 먼저 다운로드되게 하는 것입니다. 즉, 이미지를 지연 로드하는 것이죠. 뷰포트에 이미지가 ..
[프론트엔드 성능 최적화 가이드] 2장 올림픽 통계 서비스 최적화
·
Frontend/Perfomance Optimization
학습할 최적화 기법CSS 애니메이션 최적화컴포넌트 지연 로딩 단일 컴포넌트 분할컴포넌트 사전 로딩이미지 사전 로딩애니메이션 최적화문제의 애니메이션 찾기 설문 항목을 클릭하면 해당 응답에 대해 필터링되고 막대 그래프의 배경 색과 막대의 가로 길이가 변합니다.그런데 이 애니메이션을 계속 보다 보면 약간 이상하게 느껴집니다. 막대가 늘어날 때 부드럽게 늘어나지 않고 어딘가 살짝 끊기는 듯한 느낌이 있습니다. 이런 끊김 현상을 쟁크(jank) 라고 합니다. 느끼지 못한다면, 개발자 도구를 열고 Performance 패널의 CPU 설정을 6x slowdown으로 설정하면 애니메이션이 끊기는 현상을 더 잘 확인할 수 있습니다.애니메이션의 원리일반적으로 사용하는 디스플레이의 주사율은 60Hz입니다. 즉, 1초에 ..
49. Babel과 Webpack을 이용한 ES6+/ES.NEXT 개발 환경 구축
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
크롬, 사파리, 파이어폭스, 엣지 같은 에버그린 브라우저_evergreen browser 1의 ES6 지원율은 약 98%로 거의 대부분의 ES6 사양을 지원한다. ES6+와 ES.NEXT의 최신 ECMAScript 사양을 사용하여 프로젝트를 진행하려면 최신 사양으로 작성된 코드를 경우에 따라 IE를 포함한 구형 브라우저에서 문제 없이 동작시키기 위한 개발 환경을 구축하는 것이 필요하다. 또한 대부분의 프로젝트가 모듈을 사용하므로 모듈 로더도 필요하다. ES6 모듈(ESM) 은 대부분의 모던 브라우저(Chrome 61, FF 60, SF 10.1, Edge 16 이상)에서 사용할 수 있다. 하지만 다음과 같은 이유로 아직까지는 ESM보다는 별도의 모듈 로더를 사용하는 것이 일반적이다. IE를 포함한 구형 ..