Tree shaking이란?

이현우·2024년 2월 16일
0

Tree shaking이란 무엇인가요?

  • 실제로 사용되지 않는 코드를 제거하는 기법입니다.

  • 최종 번들의 크기를 줄이고, 애플리케이션의 로딩 속도와 성능을 향상시켜줍니다.

  • ES2015 모듈 구문은 정적 구조에 의존합니다.

  • 이름과 개념은 ES2015 모듈 번들러의 rollup에 의해 대중화되었습니다.

Tree shaking의 필요한 이유는 무엇입니까?

  • 어떤 응용 프로그램에서도 코드 크기를 상당히 줄일 수 있습니다.

  • 즉, 보낼 코드가 적을수록 애플리케이션이 더 성능적으로 우수해집니다.

  • Tree shaking은 주로 Rollup과 Webpack 번들러에서 구현되어 있습니다.

Tree shaking은 어떻게 동작하나요?

  • 모듈 번들러가 애플리케이션의 모든 모듈을 분석하고, 사용되지 않는 코드를 식별하여 제거하는 과정입니다.

  • 이 과정에서 모듈 간의 종속성을 분석하여 사용되지 않는 코드 경로를 찾고, 이를 제거하여 최종 번들의 크기를 줄입니다.

Tree shaking을 위해 어떤 종류의 코드가 효과적으로 최적화될 수 있나요?

  • 주로 함수, 클래스, 변수 등의 정적 코드를 최적화합니다.

  • 특히, 사용되지 않는 함수, 클래스, 변수 등이 포함된 모듈은 효과적으로 제거될 수 있으며, 이는 최종 번들의 크기를 크게 줄일 수 있습니다.

Tree shaking을 실패할 수 있는 상황은 무엇인가요?

  • 주로 정적 코드에 적용되므로 동적으로 생성되는 코드나 eval() 함수를 사용하는 코드에는 적용되지 않습니다.

  • Tree shaking을 위해 사용되는 모듈 시스템이 정확하게 지원되지 않는 경우에도 효과적으로 동작하지 않을 수 있습니다.

최적화 부분에서 Tree shaking과 Code spliting 차이

요약: Tree shaking과 Code splitting은 모두 웹 애플리케이션의 성능을 향상시키기 위한 최적화 기법입니다만, 그 방향성과 작동 원리에서 차이가 있습니다. Tree shaking은 번들 크기를 줄이는 데 중점을 두고 있으며, 사용되지 않는 코드를 제거하는 데 초점을 맞춥니다. 반면에 Code splitting은 애플리케이션을 더 작은 조각으로 나누어 초기 로딩 시간을 최적화하는 데 중점을 두고 있습니다.

Tree shaking은 번들에 포함된 코드 중에서 사용되지 않는 코드를 제거하여 번들 크기를 줄이는 기술입니다. 일반적으로 JavaScript 프로젝트에서 사용되며, 모듈 시스템(예: ES6의 import/export)을 통해 코드를 구성할 때 효과적으로 적용됩니다. 예를 들어, 애플리케이션에서 특정 함수나 변수를 사용하지 않을 경우, Tree shaking은 해당 코드를 식별하고 제거하여 번들 크기를 최소화합니다. 이는 사용자가 앱을 더 빨리 다운로드하고 실행할 수 있도록 도와줍니다.

Code splitting은 애플리케이션을 여러 개의 작은 번들로 분할하는 기술입니다. 이를 통해 초기 페이지 로드 시 필요한 최소한의 코드만 다운로드하여 애플리케이션의 초기 로딩 시간을 최소화할 수 있습니다. 예를 들어, 사용자가 특정 기능이나 라우트에 접근할 때 해당 부분에 필요한 코드만 다운로드하여 불필요한 코드를 제거하고 성능을 향상시킵니다. 이는 대규모 애플리케이션의 경우 특히 유용하며, 사용자 경험을 향상시키는 데 중요한 역할을 합니다.

rollup, webpack 차이점

요약: Rollup과 Webpack은 모두 JavaScript 애플리케이션의 번들링 도구로 널리 사용되지만, 목표와 사용 사례에서 약간의 차이가 있습니다. Rollup은 주로 라이브러리나 패키지를 개발할 때 사용되며, Tree shaking과 간단한 설정이 주요 장점입니다. 반면에 Webpack은 웹 애플리케이션의 번들링 및 빌드에 사용되며, 다양한 기능과 유연성을 제공하여 복잡한 애플리케이션을 구성하는 데 적합합니다.

Rollup: Rollup은 ES6 모듈 번들링을 위한 주로 JavaScript 라이브러리나 패키지를 빌드할 때 사용됩니다. Rollup은 간단하고 빠르며, Tree shaking을 효과적으로 지원하여 번들 크기를 최소화할 수 있습니다. 주로 라이브러리나 패키지를 개발할 때 사용되며, 불필요한 코드를 제거하여 최적화된 결과물을 생성합니다.

Webpack: Webpack은 Rollup과 비슷하게 JavaScript 애플리케이션의 번들링을 수행하지만, 보다 다양한 기능을 제공합니다. Webpack은 모듈 번들링 뿐만 아니라 다양한 리소스(이미지, CSS 등)도 번들링할 수 있으며, 로더(loader)를 통해 다양한 전처리 작업을 수행할 수 있습니다. 또한 Code splitting, Hot Module Replacement(HMR) 등의 기능을 포함하여 더 많은 유연성과 확장성을 제공합니다. 주로 웹 애플리케이션의 번들링 및 빌드에 사용되며, 다양한 설정 옵션을 통해 원하는 대로 커스터마이징할 수 있습니다.

0개의 댓글