https://github.com/jamiebuilds/babel-handbook/blob/master/translations/ko/README.md
babel이란?
모든 브라우저가 최신 문법인 ES6를 지원하지 않음
이러한 호환성 문제 때문에 있는 것이 babel
ES5 이상 버전으로 작성된 코드를 자바스크립트 하위 버전으로 변환하여
호환될 수 있게 해주는 컴파일러
- Babel의 기능
Transform syntax
Polyfill features that are missing in your target environment (through a third-party polyfill such as core-js)
Source code transformations (codemods)
And more! (check out these videos for inspiration)
1. 문법 변환
2. 대상 환경에서 core-js와 같은 서드파티 폴리필을 통해 빠져있는 것들을 채워줌
3. 소스코드 변환 (codemods : 코드변환을 자동화시킬 수 있는 도구)
등등!
Babel은 Babylon을 사용해 코드를 파싱하고
AST를 탐색해 모든 변수 이름을 변환후
코드를 생성함.
AST란?
1. 설명
Abstract Syntax Tree
프로그래밍 언어의 문법에 따라 소스 코드 구조를 표시하는 계층적 프로그램 표현 (respresentation) 입니다
출처 : https://gyujincho.github.io/2018-06-19/AST-for-JS-devlopers
일반 텍스트로부터 트리와 같은 데이터 구조로 만들어 줌
2. AST의 추출
- 1. 렉시컬 분석
코드의 문자를 읽어서 토큰으로 만들어 합침
주석을 지우고 코드를 토큰으로 나눔
공백, operator, symbol, special symbol을 만나면 단어가 끝난 것으로 간주
- 2. 신택스 분석
토큰 목록을 트리 구조로 만듦. 에러가 있을 경우 에러표시.
불필요한 토큰은 생략
Abstract Syntax Tree 를 만듦.
참고 :
AST explorer : 코드를 AST로 변환해주는 사이트
AST explorer
astexplorer.net
읽어볼 만한 자료들
자바스크립트 개발자를 위한 AST 이해하기
요즘 자바스크립트 프로젝트를 하다보면, devDependencies에 정말 많은 의존성이 있음을 알 수 있다. 자바스크립트 트랜스파일링, 코드 최소화, CSS pre-processor, eslint, prettier 등등등. 이러한 기능들은
yceffort.kr
Codemod를 이용한 코드 변환
소프트웨어 엔지니어로서 저희는 코드베이스의 많은 파일들에 규정화된 변환을 적용해야할 때가 있습니다. 이는 저희가 쓰는 API가 변화하거나 라이브러리가 더 이상 유지보수가 되지 않거나
medium.com
자바스크립트 개발자를 위한 AST(번역)
AST for JavaScript developers(by Bohdan Liashenko)의 번역글입니다.
gyujincho.github.io
폴리필
ko.javascript.info
Babel Handbook
https://github.com/jamiebuilds/babel-handbook/blob/master/translations/ko/README.md
'TIL' 카테고리의 다른 글
Jest with Webpack (1) | 2023.12.27 |
---|---|
TIL React.Children, Outlet, Routes index속성 (0) | 2023.12.26 |
TIL noop bind-event-listener memoize-one popover component classnames (0) | 2023.12.19 |
TIL: History API (0) | 2023.12.10 |
[TIL] 리액트 이벤트타겟 타입, Input의 Change Event속성, 이벤트 버블링 (2) | 2023.11.25 |