ECMAScript 6 사용


162

브라우저 콘솔에서 ECMAScript 6 코드를 실행하는 방법을 찾고 있지만 대부분의 브라우저는 원하는 기능을 지원하지 않습니다. 예를 들어, Firefox는 화살표 기능을 지원하는 유일한 브라우저입니다.

Chrome에서 이러한 기능을 실행할 수있는 방법 (확장자, 사용자 스크립트 등)이 있습니까?

답변:


158

Chrome에서 대부분의 ES6 기능은 "실험용 JavaScript 기능"이라는 플래그 뒤에 숨겨져 있습니다. 을 방문 chrome://flags/#enable-javascript-harmony하여이 플래그를 사용 설정 한 다음 Chrome을 다시 시작하면 많은 새로운 기능이 제공 됩니다.

화살표 기능은 V8 / Chrome에서 아직 구현되지 않았으므로이 플래그는 화살표 기능을 "잠금 해제"하지 않습니다.

화살표 함수는 구문 변경이므로 JavaScript 구문 분석 방법을 변경하지 않으면이 구문을 지원할 수 없습니다. ES6에서 개발하는 것을 좋아한다면 ES6 코드를 작성하고 ES6-to-ES5 컴파일러를 사용하여 모든 기존 (현대) 브라우저와 호환되는 JavaScript 코드를 생성 할 수 있습니다.

예를 들어 https://github.com/google/traceur-compiler를 참조 하십시오 . 글을 쓰는 시점에서 ES6의 모든 새로운 구문 기능을 지원 합니다 . 이 답변 맨 위에 언급 된 플래그와 함께 원하는 결과에 매우 가깝습니다.

콘솔에서 직접 ES6 구문을 실행하려면 콘솔의 JavaScript 평가기를 덮어 쓰려고 시도 할 수 있습니다 (예 : 코드를 실행하기 전에 Traceur 선행 프로 시저가 실행 됨). 이 작업을 좋아한다면 개발자 도구의 동작을 수정하는 방법을 배우려면 이 답변 을 살펴보십시오.


5
Chrome 용 개발 도구 인 ScratchJS도 있습니다. chrome.google.com/webstore/detail/scratch-js/…
pixel 67

8
화살표 기능은 이제 최신 버전의 크롬에서 완전히 구현됩니다. 이 팁은 다른 ES6 기능에 유용합니다. class예를 들어 구문 과 같습니다 .
Adam Brown

7
이 답변은 이제 대부분 구식입니다.
Michał Perłakowski

@Gothdo 세부 사항은 실제로 구식이지만 (화살표 기능은 요즘 잘 지원됩니다) 실험적인 JS 기능을 활성화하는 일반적인 조언은 여전히 ​​사실입니다. 예를 들어 정규식의 숨김은 기본적으로 비활성화되어 있습니다. --enable-javascript-harmony플래그가 설정된 경우 다음이 false를 반환합니다. 플래그가 설정 /(?<!a)b/.test('ab')되지 않은 경우 다음 오류가 발생합니다. "Uncaught SyntaxError : Invalid regular expression : / (? <! a) b / : Invalid group")
Rob W

구식이 아니며 이전 버전의 Windows를 사용하는 클라이언트의 arrow_functions 와 동일한 문제가 있었습니다 . 깃발은 트릭을했다, 감사합니다!
Jaime Yule

47

바벨 은 ES6를 시험해보기위한 훌륭한 트랜스 필러입니다. 웹 사이트의 "평가하기"섹션에있는 브라우저에서 ES6을 실행할 수 있습니다. jsfiddle과 유사하게 작동합니다.

예를 들어 화살표 :

let add = (x,y) => x + y;
let result = add(1,1);
console.log(result);

결과를 표시합니다 2 .

바벨 "번역", 즉 ES6을 현재 브라우저 기술로 실행할 수있는 ES5 자바 스크립트로 변환합니다. 를 통해 Babel을 설치할 수 있습니다 npm install -g babel. 일단 설치되면, 위의 화살표 예를 파일로 저장할 수 있습니다. "ES6.js"파일이라고합니다. 노드를 설치 한 다음 명령 행에서 출력을 노드로 파이프한다고 가정하십시오.

babel ES6.js | node

그리고 당신은 출력을 볼 수 있습니다 2. 다음 명령을 사용하여 번역 된 파일을 영구적으로 저장할 수 있습니다.

babel ES6.js --out-file output.js

output.js "번역":

"use strict";

var add = function (x, y) {
  return x + y;
};

var result = add(1, 2);

console.log(result);

최신 브라우저에서 실행할 수있는 것은 물론입니다.

클래스를 사용하는 예제

ES6는 빠르게 움직이는 대상입니다. Traceur 및 Babel과 같은 트랜스 파일러가 지원하는 기능 및 브라우저 지원을 찾으 려면 호환성 표 를 참조하십시오 . 차트를 확장하여 호환성을 확인하는 데 사용 된 테스트를 확인할 수도 있습니다.

여기에 이미지 설명을 입력하십시오

브라우저에서 최신 ES6를 시험해 보려면 Firefox 야간 빌드 또는 Chrome 릴리스 채널을 사용해보십시오.


아직 들어 보지 못했다면 jspm을 확인하십시오. CommonJS, AMD 및 ES6 모듈을 사용할 수 있습니다. Traceur 또는 Babel을 사용하여 실행 전에 브라우저에서 ES6를 ES5로 "컴파일"합니다. jspm의 장점 중 하나는 npm 모듈 또는 약간의 구성으로 Github의 모듈을 사용할 수 있다는 것입니다. 다른 모듈 리포지토리는 향후에 추가 될 수 있습니다. jspm은 꽤 괜찮은 브라우저를 지원합니다. 테스트되지는 않았지만 IE9 +라고 생각합니다. (귀하의 ES6 컴파일러도 이것에 영향을 미칩니다.)
Kevin Dice

우분투 17.04에, 나는 할 필요가 sudo npm install -g --save-dev babel-cli babel-preset-es2015$(npm bin)/babel ES6.js --presets es2015: RF, 그것은 작동하도록 babeljs.io/docs/plugins/preset-es2015
과일

12

다음 링크 중 하나를 찾고있을 것입니다.

바벨 ( 웹팩 , 갤프 , 그런트 , 기타 프레임 워크 및 언어 )

개발 파이프 라인에서 Babel을 사용하면 JavaScript가 자동으로 크로스 브라우저 호환되도록 변환됩니다 (변환). 또는 TypeScript를 사용하는 경우 쉬울 수 있습니다. 코드가 이미 변환되고 있습니다.




트랜스 파일러 (예 : Babel / Typescript)를 설정하고 싶지 않거나 트랜스 파일러가 아직 지원하지 않는 기능을 사용하고 싶습니까?

chrome : // flags / # enable-javascript-harmony로 이동 하여 JavaScript Harmony 플래그를 활성화하면 브라우저에서 실험적인 ECMAScript 기능을 사용할 수 있습니다 . 일부 기능의 경우 JavaScript Harmony 플래그가 활성화 된 상태에서 Chrome Canary 를 사용해야 할 수도 있습니다 .

JS 하모니

새로운 JavaScript API는 일반적으로 Babel에서 다루지 않으며 고유 한 Chrome 플래그를 갖습니다.


화살표 기능 사용

이 질문은 특히 화살표 기능을 사용하여 언급했습니다. 화살표 기능은 이제 IE 및 Opera Mini를 제외한 모든 브라우저에서 기본적으로 지원됩니다. caniuse를 참조하십시오 .

화살표 기능을 사용하려면 약간 어려웠습니다. 아래 이력은이 기능을 사용하기 위해 다른 시점에서 수행 한 작업을 보여줍니다.

1) 처음에 화살표 기능 은 플래그가 활성화 된 Chrome Canary 에서만 작동했습니다 chrome://flags/#enable-javascript-harmony. 이 기능은 버전 39 에서 적어도 부분적으로 구현 된 것 같습니다 .

2) 그런 다음 화살표 는 JavaScript Harmony 플래그 뒤에 Chrome 에서 제공되는 기능 입니다.

3) 마지막으로 Chrome 45 에서는 기본적으로 화살표 기능이 사용됩니다.

다른 새로운 ECMAScript 기능에서도 유사한 패턴이 발생할 것으로 예상 할 수 있습니다.


TypeScript에는 훌륭한 변환기가 제공됩니다. 바벨은 일반적인 자바 스크립트 번역기이기도합니다. es6 코드를 es5로 변환하면 브라우저 지원 기능이 멋진 es6을 사용할 때까지 기다릴 필요가 없습니다!
wp-overwatch.com


3

2015 년 11 월 현재 FirefoxEdge 는 ES6 경쟁을 주도하고 있습니다. Chrome에없는 기능을 실험하려면이를 사용하십시오. Edge에는 클래스 / 하위 클래스가 있고 Firefox에는 프록시가 있습니다 . 그들 사이에는 거의 모든 ES6 기능이 있습니다 .

Chrome 콘솔에서 ES6을 사용해야하는 경우 간단하고 시도 된 진정한 방법이 있습니다.

인내심을 가지십시오.

브라우저는 대부분의 HTML5 표준에서 발을 끌고있는 Safari조차 ES6을 채택하고 있습니다. Google에 시간을 내면 ES6 기능을 하나씩 구현합니다. 예를 들어 생산 채널에서 플래그없이 화살표 기능을 사용할 수 있습니다.

확장을 기대하지 마십시오. ES6를 한 줄씩 ES5로 변환 할 수 없으므로 Babel을 사용 하여 콘솔을 확장 할 수는 없습니다 .

실험 js 플래그가 있다는 것은 사실이지만, 좋은 이유가 있습니다. V8에는 프록시가 있지만 구식 (비표준) 구문이 있으며 보안 문제가 있습니다. 그것의 구조 또한 불완전하다 : 어떤 경우에는 효과가 있고, 어떤 경우에는 효과가 없다는 것을 알게 될 것이다.

ES6 만 재생하려면 Edge / Firefox로 간단히 재생하십시오. 그들은 거의 모든 Babel을 다루고 콘솔과 디버거를 가지고 있으며 Babel이 제공 할 수없는 기능을 가지고 있습니다.


2
Safari는 실제로 모든 데스크톱 브라우저보다 앞서 있으며 ios10 모바일은 ES6 지원에서 Android 용 Chrome보다 앞서 있습니다. kangax.github.io/compat-table/es6
Louis Duran

@Louis iOS 10 이전에 Safari는 떠오르는 웹 기술을 무시했습니다 . 그로부터 반년이 지난 지금도, 오래된 iOS 사용자는 브라우저 만 업그레이드 할 수없고 모바일 개발자의 ES6 중단을 억제하는 독창적 인 힘을 지니고 있기 때문에 기존 iOS 사용자의 21 %가 ES5에 갇혀 있습니다 (98 % Android는 최신 버전을 실행할 수 있음) 크롬). Q와 A가 더 이상 사용되지 않으므로이 답변을 변경하지 않고 유지하지만 ES6을 약간 넘어 서면 Safari 10이 비동기 함수를 누락하거나 API를 가져와 여전히 뒤쳐져 있습니다.
Sheepy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.