일관적인 방식으로 코딩하면서, 다양한 브라우저에서 돌아가는 어플리케이션을 만들기 위한 도구
바벨탑
과 마찬가지로 브라우저마다 사용하는 언어(js 버전)가 달라서 프론트엔드 코드는 일관적이지 못할 때가 많다.바벨탑
창세기 11장에 등장하는 건축물. 인간들이 천국에 닿으려고 계속 쌓았는데, 그 오만함에 분노한 야훼가 모든 인간의 말을 제각각으로 만들고 사람들을 온 땅으로 흩어 버리는 바람에 공사가 중단되어 버렸다고 한다
...
창세기에는 이로 인해 탑에는 혼돈을 의미하는 바벨(Babel)이라는 이름이 붙었다
// 바벨, 바벨 커맨드라인 도구
$ npm install -D @babel/core @babel/cli
// 설치 완료후 node_module/.bin 폴더에 추가된 바벨 명령어 사용 가능
$ npx babel app.js
파싱
과 출력
만 담당하고 변환
작업은 플러그인이 처리한다.module.exports = function myBabelPlugin() {
return {
visitor: {
Identifier(path) {
// Identifier() 메소드로 들어온 인자 path에 접근하면 코드 조각에 접근할 수 있다
const name = path.node.name;
// 바벨이 만든 AST 노드를 출력
console.log('Identifier() name: ', name);
// 변환 작업: 코드 문자열을 역순으로 변환
path.node.name = name
.split("")
.reverse()
.join("")
}
},
};
}
--plugin
옵션으로 플러그인 지정후 실행$ npx babel app.js --plugins ./my-babel-plugin.js
@babel/plugin-transform-block-scoping
$ npm install -D @babel/plugin-transform-block-scoping
@babel/plugin-transform-arrow-functions
$ npm install -D @babel/plugin-transform-arrow-functions
@babel/plugin-transform-strict-mode
$ npm install -D @babel/plugin-transform-strict-mode
module.exports = {
plugins: [
"@babel/plugin-transform-block-scoping",
"@babel/plugin-transform-arrow-functions",
"@babel/plugin-transform-strict-mode"
]
}
npx babel app.js