'노드-하모니'는 무엇을합니까?


180

노드 응용 프로그램에서는 다음과 같은 조화 플래그로 노드를 실행해야했습니다.

node --harmony app.js

이 하모니 깃발은 무엇입니까? 무엇을하고 왜 앱없이 앱을 실행할 수 없습니까?

노드 명령 행 옵션 ( node --help)을 살펴 보았지만 세부 정보도 제공하지 않습니다. 노드 문서도 도움이되지 않았습니다.

답변:


135

타이핑 man node은 조화 플래그에 이것을 가지고 있습니다 :

 --harmony_typeof (enable harmony semantics for typeof)
       type: bool  default: false
 --harmony_scoping (enable harmony block scoping)
       type: bool  default: false
 --harmony_modules (enable harmony modules (implies block scoping))       
        type: bool  default: false
 --harmony_proxies (enable harmony proxies)       
        type: bool  default: false
 --harmony_collections (enable harmony collections  (sets,  maps,  andweak maps))
       type: bool  default: false 
 --harmony (enable all harmony features (except typeof))
       type: bool  default: false

그래서 --harmony모든 조화 기능 (예를 가능하게하는 지름길이다 --harmony_scoping, --harmony_proxies에서, 등) 이 블로그 게시물 , 조화는 언어의 새로운 ECMAScript를 6 개 기능을 사용할 것으로 보인다. 파일이 조화없이 실행되지 않는 이유 app.js는 아마도 새로운 ECMAScript 6 표준 (블록 범위 지정, 프록시, 세트, ​​맵 등)의 이전 버전과 호환되지 않는 기능을 사용 하기 때문 입니다.


59
것을 언급 할만큼 가치입니다 하모니가 새로운 ECMA 스크립트에 사용되는 이름입니다 . 하모니 네임 스페이스에는 해당 언어에 대한 제안 기능이 포함되어 있습니다 .
eis

1
고마워요! 이제 모든 것이 이해됩니다. Btw. man nodeWindows 에서 이에 해당하는 아이디어가 있습니까? :)
jsalonen

3
@jsalonen은 없지만 > node --v8-options여기에 언급 된 내용을 얻을 수 있습니다.
eis

Windows의 경우 @eis --help(또는 -h) 를 사용하는 규칙이 있습니다 . node -h특정 man 명령이 없더라도 대부분의 콘솔 프로그램에서 작동 하므로 작동합니다. 그러나 'DOS'명령 자체는 아닙니다. 당신이 할 수있는 사람들을 위해 help dir, help set등 한숨.
Jon Coombs

@JonCoombs /?이전 "dos"명령에 더 많이 사용됩니다. 그러나 어쨌든 하나의 표준이 없으며, 예를 들어 -h많이 사용하는 것을 보지 못했다고 생각 합니다.
eis

10

이전 버전의 nodejs에서 ECMAScript 6 기능을 실행하려는 경우 --harmony 플래그를 사용할 수 있습니다. 최신 버전의 노드는 ES6을 지원하므로 --harmony 플래그가 필요하지 않습니다.



4

노드 문서에서 언급했듯이 --harmony 플래그는 ES6의 비 안정적이지만 곧 안정된 기능을 가능하게합니다.

Node.js에서 --harmony 플래그의 현재 동작은 단계별 기능 만 활성화하는 것입니다. 결국, 이제 --es_staging과 동의어입니다. 위에서 언급했듯이, 이들은 아직 안정적인 것으로 간주되지 않은 완성 된 기능입니다. 특히 프로덕션 환경에서 안전하게 재생하려면 기본적으로 V8 및 결과적으로 Node.js에서 제공 될 때까지이 런타임 플래그를 제거하십시오. 이 기능을 사용하도록 설정 한 경우 V8에서 의미가 표준을 더 가깝게 변경하도록 의미를 변경하는 경우 추가 Node.js 업그레이드를 수행하여 코드를 중단 할 수 있도록 준비해야합니다.


0

모든 ECMAScript 2015 (ES6) 기능은 배송, 준비 및 진행중인 기능을 위해 세 그룹으로 나뉩니다.

  • V8에서 안정적인 것으로 간주되는 모든 운송 기능 은 Node.js에서 기본적으로 켜져 있으며 어떠한 종류의 런타임 플래그도 필요하지 않습니다.

  • V8 팀에서 안정적으로 간주하지 않는 거의 완성 된 기능인 단계적 기능 에는 런타임 플래그가 필요합니다.- harmony .

  • 진행중인 기능 은 각각의 하모니 플래그에 의해 개별적으로 활성화 될 수 있지만, 테스트 목적이 아니라면 권장하지 않습니다. 참고 :이 플래그는 V8에 의해 노출되며 사용 중단 통지없이 변경 될 수 있습니다.

출처 : https://nodejs.org/en/docs/es6/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.