Babel은 JS 트랜스파일러 입니다.
트랜스 파일러 : 특정 언어로 작성된 코드를 비슷한 다른 언어로 변환해주는 얘
Babel은 주로 최신 JS (ES6 이상)을 구형 브라우저에서도 동작할 수 있도록 ES5 같은 이전 버전의 JS로 변환하는 데 사용됩니다.
또한, React의 JSX같은 문법도 JS로 변환해 줍니다.
const add = (a, b) => a + b;
ES6 에서 도입된 화살표 함수 이기에 Babel을 사용하면
var add = function(a, b) {
return a + b;
};
이렇게 변환 된다.
const element = <h1>Hello, world!</h1>;
같은 JSX는
const element = React.createElement('h1', null, 'Hello, world!');
이런식으로 변환된다.
사용 방법
- .babelrc 파일 사용: 프로젝트의 루트 디렉토리에 .babelrc 파일을 생성하고, Babel 설정을 이 파일에 작성하면 프로젝트 전체에 걸쳐 일관된 변환 규칙을 적용할 수 있습니다.
babel-plugin-macros
이번에 개인 사이드프로젝트용 템플릿을 제작했을때,
babel-plugin-macros 플러그인을 사용했습니다.
컴파일 시간에 코드를 변환해주는 매크로를 걸어줌으로,
{ export: "jsx", import: "__cssprop", module: "@emotion/react" }
해당 설정을 넣어주어
jsx 함수를 @emotion/react 모듈에서 import 하여 사용하도록 설정합니다. 이를 통해 Emotion을 사용한 스타일링이 JSX와 잘 통합될 수 있도록 합니다.
이 설정은 Emotion을 사용하여 스타일링된 컴포넌트를 작성할 때, JSX 변환 과정에서 Emotion의 jsx 함수를 자동으로 사용하도록 해서, Emotion의 CSS prop과 같은 기능을 원활하게 사용할 수 있게 해줍니다.
Emotion과 같은 CSS-in-JS 라이브러리를 사용할 때, 이러한 플러그인을 사용하면 개발자가 수동으로 모든 파일에 /** @jsxImportSource @emotion/react */와 같은 주석을 추가하지 않아도 되므로, 개발 편의성을 크게 향상시킬 수 있습니다.
'웹' 카테고리의 다른 글
JS - 클로저 (Closure) (0) | 2024.04.24 |
---|---|
JS - 스코프(Scope) (0) | 2024.04.24 |
Javascript 의 객체 리터럴 / 관련 팁 들 (0) | 2024.04.16 |
React-Hook-Form 심화 watch / useWatch / controll / register / wizard form (0) | 2024.04.11 |
React Hook Form 훑어보기 (0) | 2024.04.08 |