안정된 새로운 Node.js (0.12) 릴리스는 최근에 업그레이드 된 Google v8 JavaScript 엔진 v3.28.73 과 함께 제공되었습니다 .
--harmony
플래그 를 사용하지 않고 Node.js에 현재 어떤 ECMAScript 6 기능이 있습니까?
ES 6 기능을 나열한다고 주장하는 여러 사이트를 확인했지만 모든 기능이 최신 상태가 아닌 것으로 보입니다. 이 표 ( 업데이트 : 현재 Node.js 상태가 0.12로 업데이트 됨 )는 여러 기능이 다음과 같이 나열되어 있기 때문입니다. --harmony
플래그가 필요 하지만 그 중 일부는 기본적으로 활성화되어 있습니다 (Maps, Sets, Symbols 등). 업데이트 : 노드 특정 테이블 이 사용 가능해졌습니다.
또한 v8 엔진을 위해이 정보를 순수하게 구글로 업데이트하면 최신 정보가 제공 됩니다. 현재 v8 릴리스는 4.2. * 이며 이는 Node.js가 사용하는 것보다 훨씬 앞서 있습니다.
이 질문과 답변이 Node.js 개발자가 사용할 수있는 ES 6 기능에 대한 포괄적 인 요약이되기를 바랍니다.
Node.js 0.12에서 활성화 된 ES 6 기능
- 지도, 세트 / 약점, 약점
- 기호
- Object.observe
- 약속
- 번호
- .isInteger
- .isSafeInteger
- .isNaN
- .EPSILON
- .MIN_SAFE_INTEGER
- .MAX_SAFE_INTEGER
- 수학
- .clz32
- .imul
- .기호
- .log10
- .log2
- .log1p
- .expm1
- .곤봉
- .sinh
- .tanh
- .acosh
- .asinh
- .atanh
- .trunc
- .fround
- .cbrt
- .hypot
답변
--harmony
플래그가 없는 기능 :
- “for-of”루프
- Map , Set , WeakMap , WeakSet (이미 지정된 문제)
- 기호 (이미 지정된 문제)
- 약속 (이미 지정된 문제)
- 배열 방법 :
- 목적:
- .observe () (초기에는 ES7 용 으로 계획 되었지만 2015 년 11 월 2 일에 사양에서 완전히 제거됨 )
- .is ()
- .setPrototypeOf ()
- .getOwnPropertySymbols ()
- .getNotifier () (하지 ES6, 예를 들어 여기 )
- .apply () 및 .call () (es6 아님, Funciton.prototype.call 및 Function.prototype.apply와 같은 목적)
- 숫자 속성 및 메서드 (이미 지정된 문제)
- 수학 방법 ( 많은 것들 ) (이미 문제에 명시되어 있음)
- 상수
나는 그것이 우리가 --harmony
깃발 없이 가지고있는 전부라고 생각합니다 .
--harmony
플래그가있는 기능 :
- 발전기
- 화살표 기능 (
--harmony_arrow_functions
와 대조적으로 플래그 필요 없음io.js
) - 변수 만 허용 –
strict mode
- 이진 및 8 진 리터럴
-
문자열 메소드 :
- .contains () (
includes()
실제 ES6 사양에서 대체 됨 ) - .startsWith ()
- .로 끝나다()
- .codePointAt ()
- .반복()
- .normalize ()
- String.fromCodePoint
- .contains () (
-
프록시 (
--harmony-proxies
플래그 뒤에 )
나는 그것이 전부라고 생각합니다. 어쩌면 내가 잊어 버린 경우-나중에 목록에 추가 할 것입니다.
답변
ES6 기능은 단계적으로 노드로 흘러갑니다. Node는 Google V8을 JavaScript 엔진으로 사용합니다. Node에서 지원되는 기능은 V8에서 먼저 구현 한 다음 Node 팀이 Node.js에 통합해야한다는 것을 의미합니다.
Google 팀은 대략 6 주마다 V8의 새 버전을 릴리스 한 다음이를 사용하는 것은 Node 팀의 책임입니다.
수동으로 선별 된 언어 기능 목록은 훌륭하지만 빨리 구식이 될 수 있습니다. Node 0.12는 더 이상 유동적이지 않지만 일반적으로 새 버전의 Node가 출시되는 즉시 수동으로 선별 된 목록이 더 이상 사용되지 않습니다.
정적 목록에 의존하지 않고 노드 버전이 지원하는 기능을 확인하는 두 가지 대체 방법이 있습니다. 이에 대한 자세한 내용과 이에 대한 자세한 예는 “Node.js가 ES 6 언어 기능을 지원하는지 확인하는 방법”을 확인하십시오.
# 1 쉬운-호환성 표
언어 기능이 있는지 확인하기 위해 작은 테스트를 사용하는 동적으로 생성 된 목록은 최신 상태를 유지합니다. 그러한 인기있는 목록 중 하나는 kangax.github.io/compat-table/es6/입니다. 우리는 노드 기능에만 관심이 있으므로 사용할 수 있습니다
kangax 사이트와 동일한 데이터를 활용합니다.
# 2 하드-백 트랙 V8 버전
Node는 V8 엔진을 사용하므로 Node에 포함 된 V8 버전을 확인하면 어떤 ES6 언어 기능이 지원되는지 알려줍니다. Node와 함께 번들로 제공되는 V8 버전을 찾을 수 있습니다 node -p process.versions.v8
.
$ node -p process.versions.v8
4.6.85.31
그런 다음 Google V8 프로젝트 리소스를 사용하여 각 버전에 구현 된 기능을 찾을 수 있습니다. V8 프로젝트 는 하모니 레이블이 표시된 ES6 이상의 기능을 찾을 수 있는 이슈 트래커를 유지합니다 .