자바 스크립트는 생태계의 폭으로 인해 고유합니다. 새로운 표준이 구문 설탕을 추가하는 동안 브라우저에서 지원되는 브라우저에서 지원되는 것이 시간이 걸립니다. Babel은 자동 변형을 통해이 문제를 해결합니다.
제품 뒤의 아이디어는 간단합니다. Babel은 ES6 또는 ES7 코드를 사용하고 새로운 구문 요소를 에뮬레이션 코드로 대체합니다. 출력은 Classic JavaScript 구문을 확인하고 Internet Explorer와 같은 구형 브라우저에서 실행됩니다.
Babel의 초기 출시는 폭풍으로 세상을 가져갔습니다. 곧 그것이 처음 등장한 직후 반응, Vue 및 Ember와 같은 다양한 프레임 워크가 포용했습니다. 개발자는 종종 백그라운드에서 작동한다는 것을 알지 못하지 않고 제품을 사용합니다. 둘 이상의 인기있는 NPM 프로젝트는 Babel에 의존성이 있습니다.
이러한 종속성은 전임자의 릴리스 프로세스를 충돌 - 가리키는 일로 변환했습니다. 버전 7은 여전히 작은 관리자 팀이 관리하므로 가능한 한 호환 되려고 노력했습니다. 변화가 깨지는 동안, 코드 생성 품질이 높음 (팀과 함께 일하고 문서를 저장하는 경우) 클라우드 스토리지 응집력을 유지하는 데 도움이 될 것입니다.)
전에 바벨과 함께 일하지 않았다면, 이것을 가이드가되도록하십시오. 호환성 걱정없이 고급 JavaScript 기능을 사용할 수 있습니다. 멋지게 삶을 쉽게 만듭니다.
프로세스를 간소화 할 수있는 도구를 원하십니까? 최고의 가이드 웹 사이트 빌더 도움이 될 것입니다. 장기적인 지원을 원하십니까? 맞아 웹 호스팅 서비스.
Babel은 일반적으로 노드 런타임 환경에 삽니다. 사용 된 버전을 확인하여 시작합시다. 출력은 다음 문서를 만드는 데 사용되는 Ubuntu 14.04 워크 스테이션에서 찾은 버전 상태를 제공합니다. 이것은 Pedantry가 아닙니다.이 단계에서는 Babel 팀이 꽤 많은 Node.js 버전에 대한 지원을 해제했음을 보여줍니다.
Tamhan @ Tamhan-ThinkPad : ~ $ node --version
v8.14.0.
Tamhan @ tamhan-thinkpad : ~ $ npm - 버전
6.4.1
버전 7의 한 가지 끊기 변경은 바벨 패키지를 자신의 네임 스페이스로 옮기는 것과 관련이 있습니다. 이전 패키지는 다양한 저장소에서 제거되지 않았습니다. 이는 레거시 패키지 이름을 사용하는 것이이 단계에서 수반되는 수치에 표시된 상황으로 이어질수록 중요합니다.
Tamhan @ tamhan-thinkpad : ~ / workspaceb7 $ npm
install --save-dev @ babel / core @ babel / cli @
Babel / Preset-env @ babel / node.
...에 ...에 ...에
+ @ babel / core @ 7.2.0.
+ @ babel / node @ 7.2.0.
+ @ babel / cli @ 7.2.0.
+ @ babel / preset-end @ 7.2.0
위의 단계에서는 NPM 프로젝트 내부에서 작동한다고 가정합니다. 이 경우 빌드 조치를 통해 Babel을 실행하는 것은 쉽습니다. 열다 package.json. 아래 코드에서 시연 된대로 수정하십시오.
{
...에 ...에 ...에
"main": "index.js",
"스크립트": {
"테스트": "echo \"오류 : 테스트 없음
지정된 \ "& amp; & amp; exit 1",
"빌드": "babel index.js -d lib"
},
Babel을 일하기 위해 빌드 조치를 취하는 것입니다. 이것은 npm 실행 명령을 통해 가장 잘 수행됩니다. 그만큼 -디 가치는 BABEL을 통해 결과가 수제 폴더 -이 단계에 수반되는 수치는 폴더가 즉석에 생성됩니다.
Tamhan @ tamhan-thinkpad : ~ / workspaceb7 $ npm
빌드를 실행하십시오
& gt; [email protected] 빌드 / 홈 / Tamhan /
workspaceb7.
& gt; babel index.js -d lib.
Babel으로 1 개의 파일을 성공적으로 컴파일했습니다.
추가 구성 옵션없이 Babel을 호출하면 트랜스 빌레이션을 사용할 수 없습니다. 코드는 대상 환경에 대한 추가 정보를받는 경우에만 코드를 변형 할 수 있습니다. 이는 명령 줄 매개 변수를 통해 수행하거나 파일을 작성하여 수행 할 수 있습니다. .babelrc. 프로젝트 루트에서.
Babel은 각각의 플러그인 세트를 통해 구성되며, 이들 각각은 트랜스 패널이 코드베이스로 변환됩니다. 우리는 그를 사용합니다 프리 세트 - env. 패키지 - 대부분의 기지를 다루기위한 사전 구성된 변형 세트가 제공됩니다.
{
"사전 설정": [ "@ babel / preset-env"]
}
일부 라이브 코드에 대해 프로그램을 테스트하기 위해 index.js에 새 나이 자바 스크립트를 추가하십시오. 이 단계를 함께 제공하는 코드는 레거시 브라우저에서 작동하지 않습니다. 완료되면 암시 적 함수가 A에 대체됩니다. 표준 그림과 같이 선언문.
함수 tamstest () {
[1, 2, 3] .map ((n) = & gt; n + 1);
}
프리 세트 - env. 기본적으로 대부분의 변동을 적용합니다. 제품의 목표는 대역폭 및 성능 비용과 관련없이 보편적으로 호환되는 JavaScript를 만드는 것입니다. A를 전달하여 구성을 변경할 수 있습니다 목표물 객체 - 아래의 예는 Chrome의 특정 버전과 IE를 대상으로합니다.
{
"사전 설정": [
[
"@ babel / preset-env",
{
"목표": {
"크롬": "58",
"즉": "11"
}
}
...에]
...에]
}
Babel의 브라우저 타겟팅은 Chrome 및 Internet Explorer에만 국한되지 않습니다. 협력 덕분에 브라우저 목록 또한 개발자는 아래 그림과 같이 12 개 이상의 목표와 혼합하고 일치시킬 수 있습니다.
이름은 대소 문자를 구분하지 않습니다.
브라우저리스트는 또한 고급 쿼리를 취할 수 있습니다. 그것의 홈페이지 구성 옵션을 나열합니다. 거의 모든 것이 바벨 내부에서 사용할 수 있습니다. 바벨룰라 ...에 워크 스테이션에 NPX가 설치되어있는 경우 쿼리를 로컬로 평가할 수 있습니다.
{
"목표": "& gt; 0.25 %, 죽지 않은"
}
손으로 바벨을 불러 일으켜서, 지루해지게됩니다. NodeMon 유틸리티는 파일 시스템 리소스를 모니터하고 변경 사항이 감지되면 명령을 실행합니다. 이론적으로 노드에 걸리지 않는 지원은 작은 변경 사항을 통해 처리됩니다. package.json. ...에
{
"이름": "workspaceb7",
...에 ...에 ...에
"main": "index.js",
"스크립트":
{
"시작": "NodeMon - exec babel-node
index.js ",
일부 워크 스테이션은 있습니다 노드 몬스터 전 세계적으로 설치됩니다. 그렇지 않은 경우 프로그램을 호출하면 아래와 같은 오류 메시지가 나타납니다. 다행히도, 배포 노드 몬스터 그를 통해 쉽게 수행 할 수 있습니다 NPM 설치 명령.
Tamhan @ tamhan-thinkpad : ~ / workspaceb7 $ npm
install --save-dev nodemon
불을 끄다 npm 시작 터미널 윈도우에서 내용을 변경하기 위해 진행합니다. index.js. GEDIT와 같은 편집자와 함께 Visual Studio 코드 ...에 저장 후, 노드 몬스터 상태 정보를 출력합니다.
[NodeMon] 변경으로 인해 다시 시작 ...
[NodeMon]`babel-node index.js '시작
[NodeMon] 깨끗한 출구 - 변경을 기다리고 있습니다
다시 시작하기 전에
동안 노드 몬스터 탐지는이 시점에서 완벽하게 작동해야합니다. index.js. 에서 찾을 수있는 파일 수제 업데이트하지 마십시오. 이것은 멋진 것으로 인해 발생합니다 바벨 노드 - 트랜스 페일 파일을 디스크에 커밋하지 않습니다. 대신 트랜스 레일링 된 파일과 함께 작동하는 노드 CLI의 수정 된 버전에서 발생합니다.
Babel은 명령 줄에서 작동하는 것으로 제한되지 않습니다. 올바른 패키지가 설치되면 코드를 다른 프로그램에서 트랜스 빌링 할 수도 있습니다. 이 단계를 수행하는 스 니펫은 입력 문자열에 대한 기본 변환 세트를 적용합니다. 일반적으로 구성 설정은 일반적으로 바벨룰라 파일.
VAR BABEL = 요구 ( "@ BABEL / CORE");
"@ babel / core"에서 {transform} 가져 오기;
"@ babel / core"에서 babel으로 가져 오기 *;
babel.transform ( "code ();", 옵션,
기능 (Err, Result) {
결과.
결과. 맵;
결과 .ast;
});
소스 코드는 일반적으로 문자열 변수에 저장되지 않습니다. Babel API는 파일을 사용하여 변수에 대한 입력 문자열을 밟는 일련의 파일 관련 함수를 통해이 작업을 수행합니다. 그러나 결과는 일반 JavaScript 변수로 반환됩니다.
babel.transformfile ( "filename.js", 옵션,
기능 (Err, Result) {
결과; // = & gt; {코드,지도, AST}
}
);
Babel 7은 대부분의 API 호출의 동기 및 비동기 버전을 도입했습니다. 귀하의 필요에 맞는 오른쪽을 선택하십시오 - 작은 예제를 즉시 변환 할 수있는 동안 더 복잡한 파일에서 느슨한 바벨을 느슨하게 설정하면 수십 초로 실행되는 지연이 쉽게 이어질 수 있습니다.
백그라운드에서 일어나는 일에 대해 궁금해하는 것을 발견 한 적이 있습니까? 이 페이지 ...에 바벨 배포판에 포함 된 모든 플러그인 목록을 제공하며, 스스로 플러그인을 만들려고하는 모든 사람들에게 몇 가지 힌트가 포함되어 있습니다.
Babel은 NEW-AGE JavaScript 요소를 형질로하고 제한되지 않습니다. 이 제품에는 기능이 제한된 Typescript 엔진이 들어 있습니다. 타이핑 정보를 제거하고 고급 요소를 대체합니다. 슬프게도, Babel은 유형 검사를 수행하지 않습니다. 이로 인해 Typescript 언어의 가장 중요한 이점 중 하나가 제거됩니다.
{
"사전 설정": [ "@ babel / preset-typescript"]
}
동작 작업이 일반적으로 원활하게 작동하지만 때로는 문제가 발생합니다. 그 경우에는, Babel Repl. 도움이됩니다. 워크 스테이션의 브라우저에서 Babel을 실행하고 서로 옆에 입력 및 출력을 표시합니다.
우리의 소개는 Babel이 다양한 프로젝트에서 널리 사용되는 것을 보았습니다. Babel의 관리자 팀은 A.와 버전 업그레이드를 단순화합니다 자세한 변경 로그 ...에 Babel을 프로그래밍 방식으로 사용하는 경우 상담하는 것을 잊지 마십시오. API 업그레이드 가이드 ...에
이 기사는 원래 Creative Web Design Magazine의 Issage 283에서 출판되었습니다. 웹 디자이너 ...에 여기 문제를 구입하십시오 또는 웹 디자이너를 구독하십시오 ...에
관련 기사:
(이미지 크레디트 : 미래) 일반적인 웹 사용자 인 경우 정기적으로 방문하는 웹 사이트의..
(이미지 크레디트 : Adam Dewhirst) ShapR3d는 Kitbashing을위한 훌륭한 도구입니다. 그것은 문자 �..
[이미지 : 웹 디자이너] SVGS로 애니메이션에 관해서는 주요 턴 오프는 JavaScript 라이브러�..
몇 년 전, Lucid Games의 미술 감독은 PlayStation 4에 게시 될 4x4 접지 기반 전투 게임을위한 10 개의 독�..
HTML5 및 JavaScript에 찬성하여 Adobe가 플래시가 포기되고 있습니다. 그것의 공식적인 평생은 2020 년 �..