Node.js는 ES6 모듈에 대한 지원을 어떻게 발전시켰나요?

Mary-Kate Olsen
풀어 주다: 2024-11-07 21:08:03
원래의
269명이 탐색했습니다.

How has Node.js evolved its support for ES6 Modules?

ES6 모듈 지원을 위한 Node.js 계획: 심층 조사

Node.js JavaScript 런타임 환경은 오랫동안 CommonJS 모듈을 지원해 왔습니다. 외부 코드를 로드하기 위한 것입니다. 그러나 ES6(ECMAScript 2015)의 출현과 함께 기본 모듈 지원이 도입되면서 Node.js가 가져오기/내보내기 모듈을 수용할 것인가?

Node.js 13.2.0 및 Beyond

Node.js 13.2.0부터 실험적 플래그가 필요하지 않은 ES 모듈 지원이 도입되었습니다. ECMAScript 모듈(ESM) 지원을 활성화하려면 package.json 파일을 다음과 같이 설정해야 합니다.

{
  "type": "module"
}
로그인 후 복사
.js, .mjs가 있거나 확장자가 없는 모든 파일은 ESM으로 처리됩니다. ES 모듈을 활성화하는 대체 방법도 사용할 수 있으며 릴리스 노트에 설명되어 있습니다.

Node.js 13.1.0 및 이전 버전

이전 Node.js 버전의 경우 [esm](https://github.com/standard-things/esm) 모듈 로더는 ES 모듈의 프로덕션 준비 구현을 제공합니다:

node -r esm main.js
로그인 후 복사

역사적 개발 타임라인

2019년 4월 23일

ECMAScript 모듈에 대한 감지 메커니즘 업데이트가 통합되어 package.type(모듈 또는 commonjs)에 대한 옵션과 진입점을 지정하는 새로운 옵션이 도입되었습니다. 유형 및 모듈 지정자 해결.

2019년 1월 17일

Node.js 11.6.0에는 ES 모듈이 실험적 기능으로 포함되었으며 다음 플래그를 사용하여 활성화되었습니다.

node --experimental-modules index.mjs
로그인 후 복사
로그인 후 복사
v10.0 LTS 릴리스에서 이 플래그를 제거할 계획이었습니다.

2017년 9월 13일

Node.js 8.5.0이 추가되었습니다. .mjs 파일 지원, 플래그 뒤에서 액세스 가능:

node --experimental-modules index.mjs
로그인 후 복사
로그인 후 복사
원래 의도는 v10.0 LTS 릴리스에서 이 플래그를 제거하는 것이었습니다.

2017년 9월 8일

ESM 모듈에 대한 초기 지원이 Node.js 마스터 브랜치에 추가되어 --experimental-modules 플래그 뒤에서 액세스할 수 있게 되었습니다.

2017년 2월

Node.js 팀은 CommonJS와 ES 모듈이 공존할 수 있도록 방해를 최소화하는 솔루션으로 .mjs 파일 확장자를 사용하기로 결정했다고 발표했습니다. 구현에는 최소 1년이 걸릴 것으로 예상됩니다.

2016년 10월

TC-39 회의 후 Node.js 개발자는 ES 모듈 구현에 따른 과제를 설명했습니다. 주요 문제에는 정적 분석과 동적 분석, 원숭이 패치 및 모듈 감지가 포함되었습니다. *.mjs 확장자를 사용하는 것이 가능한 해결책으로 나타났습니다.

2016년 이전

Node.js의 ES 모듈 지원에 대한 논쟁은 오랫동안 지속되어 왔습니다. 상당한 기간. 새로운 사양을 수용하면서 Node.js와 HTML의 다양한 요구 사항을 해결하기 위한 다양한 제안과 토론이 이루어졌습니다.

위 내용은 Node.js는 ES6 모듈에 대한 지원을 어떻게 발전시켰나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿