ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SWC(Speedy Web Compiler)?
    CS 2024. 10. 2. 16:29

    ❓ SWC(Speedy Web Compiler)

    SWC(Speedy Web Compiler)는 JavaScript/TypeScript 컴파일러이자 번들러이다.

     

    이는 성능 향상을 목표로 개발이 되었는데, Rust로 작성이 되어 있다.

    TypeScript와 JSX를 포함한 최신 JavaScript 기능을 빠르게 변화할 수 있는 성능을 제공한다.

     

    🤔 SWC는 왜 개발이 되었는가 🤔

    프론트엔드 개발을 해본 사람이라면, Babel을 들어봤을 거다.

    JavaScript 생태계에서는 Babel을 주로 사용하는데, Babel은 JavaScript로 작성되어 있기에, 컴파일 속도가 느려질 수 있다.

    특히나 대규모 프로젝트에서 빌드 시간이 상당히 길어질 수 있다.

    💡 [참고] Babel 💡
    : Babel은 JavaScript로 작성되어 있다. JavaScript는 해석형 언어로, 메모리 관리나 실행 속도 면에서 Rust에 비해 느릴 수 있지만, 매우 유연하여 다양한 플러그인과 미들웨어를 통해 코드 트랜스파일링을 쉽게 확장할 수 있다는 장점이 있다.

     

    이를 해결하기 위해서 SWC가 개발되었는데, 성능 최적화를 위해서 Rust 언어로 작성되었다.

    💡[참고] Rust💡
    Rust는 고성능 시스템 프로그래밍 언어로, 빠른 컴파일과 메모리 관리에 유리하다.

     

    그렇기에, 이 SWC는 빠른 속도를 유지하면서도 다양한 최신 JavaScript 기능과 TypeScript를 지원한다. 게다가 SWC가 기본적인 컴파일러 역할 뿐만 아니라, 다양한 요구 사항에 맞춰 기능을 확장하거나 커스터마이징할 수 있어서 확장 가능한 구조를 가지고 있다.

     

    🤔 그럼 어디에서 사용해야 할까 🤔

    SWC는 프론트엔드 개발의 React, Vue.js, Angular와 같은 프레임워크에서 TypeScript와 주로 사용된다. TypeScript는 정적 타입 검사로 코드 안정성을 높여주지만, 빌드 과정에서는 변환이 필요하다. 이를 SWC를 통해 매우 빠르게 처리할 수 있다.

     

    변환이 필요한 이유는 아래에서 참고할 수 있다.

     

    [TS] Typescript를 왜 쓸까?

    ❓ TypeScript ❓JavaScript의 모든 기능을 포함하면서도 정적 타입 시스템과 다양한 기능을 추가 제공하는 프로그래밍 언어이다. 즉, JavaScript의 단점을 보완하여 만들어진 언어로, 엄격한 문법을 지

    alswlfjddl.tistory.com

     

    백엔드에서도 SWC를 Node.js 환경에서도 사용할 수 있다.

    예를 들어, 서버사이드 렌더링(SSR)에서 JavaScript 파일을 빠르게 처리해야 할 때, SWC가 성능상 이점을 제공한다.

    SSR은 다음과 같다.

     

    CSR과 SSR의 개념 및 동작 방식

    CSR(Client Side Rendering) 클라이언트(사용자)의 요청에 따라 필요한 부분만 응답 받아 렌더링하는 방식이다. CSR의 동작 방식 1. User(사용자)가 웹사이트에 요청 보낸다. 2. 브라우저가 서버에 콘텐츠

    alswlfjddl.tistory.com

     

    SWC는 번들링 도구와도 통합되어 사용할 수 있는데, Webpack이나 Vite, Next.js 등과 같은 번들러 및 빌드 도구와 통합되어 사용할 수 있다. 예를 들어 Next.js는 SWC를 기본 트랜스파일러로 사용하면서도 기존 Babel 설정을 지원하는 등, 개발자 친화적인 생태계를 유지하고 있다.

    💡 [참고] 트랜스파일러 💡
    : 한 프로그래밍 언어로 작성된 코드를 다른 프로그래밍 언어로 변환하는 프로그램이다. 

    예시)
    최신 JavaScript 기능의 경우 모든 브라우저에서 지원되지 않는다. 그렇기에, 트랜스파일러는 최신 문법을 더 오래된 브라우저에서도 사용할 수 있는 ES5 버전의 JavaScript로 변환하게 된다.

     

    ✅ 사용하는 이유 ✅

    1. 속도
      : SWC의 가장 큰 장점은 속도이다. Babel과 비교했을 때 빌드 속도가 최대 20배까지 빠르다고 하며, 특히나 대규모 코드베이스에서 빌드 시간을 크게 단축할 수 있다는 장점이 있다.
    2. 메모리 효율성
      : Rust로 개발된 덕분에 메모리 효율이 높아, 대규모 프로젝트에서 빌드할 때도 리소스 절약에 도움이 된다.
    3. 유연성
      : 최신 JavaScript와 TypeScript를 지원하며, 플러그인 생태계를 통해 사용자 정의 확장이 가능하다. 이를 통해 개발자가 프로젝트의 요구에 맞게 SWC를 조정할 수 있다.

     

     

    'CS' 카테고리의 다른 글

    WebView?  (3) 2024.10.03
    FE(프론트엔드)에서 어떤 test를 해야 할까? (TDD는 또 어떤 걸까?)  (1) 2024.09.27
    웹 워커(Web Worker)  (0) 2024.09.24
    Virtual DOM(가상 DOM)  (0) 2024.09.19
    [TS] Typescript를 왜 쓸까?  (2) 2024.09.18
Designed by Tistory.