Node.js에서 기본 ES 모듈을 사용하는 방법

小云云
풀어 주다: 2018-02-08 11:18:48
원래의
1664명이 탐색했습니다.

버전 8.5.0부터 Node.js는 명령줄 옵션을 통해 활성화할 수 있는 기본 ES 모듈을 지원합니다. 새로운 기능은 주로 Bradley Farias 덕분입니다. 이 글은 주로 Node.js에서 네이티브 ES 모듈 방식의 파싱을 사용하는 방법을 소개하고, 일부 내용에 대한 링크도 함께 살펴보도록 하겠습니다. 참고하시면 도움이 될 것 같습니다. .

1. 데모

이 예제의 코드 디렉토리 구조는 다음과 같습니다:


esm-demo/ lib.mjs main.mjs
로그인 후 복사

lib.mjs:


export function add(x, y) { return x + y; }
로그인 후 복사

main.mjs:


import {add} from './lib.mjs'; console.log('Result: '+add(2, 3));
로그인 후 복사

데모 실행 :


$ node --experimental-modules main.mjs Result: 5
로그인 후 복사

2. 체크리스트: 참고 사항

ES 모듈:

·모듈을 동적으로 가져올 수 없습니다. 그러나 동적 import()에 대한 작업이 진행 중이며 곧 지원이 제공될 예정입니다.

·__dirname 및 __filename과 같은 메타 변수가 없습니다. 그러나 유사한 기능인 "import.meta"에 대한 제안이 있습니다. 다음과 같이 보일 수 있습니다:


console.log(import.meta.url);
로그인 후 복사

·이제 모든 모듈 식별자는 URL입니다(이 부분은 Node.js의 새로운 부분입니다):

·파일 - 파일 확장자를 포함한 상대 경로: ../util /tools.mjs

·library - 파일 확장자 없음 및 경로 없음 lodash

·npm 라이브러리를 브라우저에서도 (번들러를 사용하지 않고) 사용할 수 있게 만드는 방법은 아직 밝혀지지 않았습니다. 한 가지 가능성은 경로를 실제 경로에 매핑하는 RequireJS 스타일 구성 데이터를 도입하는 것입니다. 현재 브라우저에서 베어 경로 모듈 식별자를 사용하는 것은 불법입니다.

CWS 모듈과의 상호 운용성

CJS 모듈을 가져올 수 있지만 항상 기본 내보내기(module.exports 값)만 있습니다. CJS 모듈 지원 명명된 내보내기를 만드는 작업이 이미 진행 중이지만 시간이 좀 걸릴 수 있습니다. 당신이 도울 수 있다면, 당신은 그것을 할 수 있습니다.


import fs1 from 'fs'; console.log(Object.keys(fs1).length); // 86 import * as fs2 from 'fs'; console.log(Object.keys(fs2)); // ['default']
로그인 후 복사

·ES 모듈에서는 require()를 사용할 수 없습니다. 주요 이유는 다음과 같습니다.

·경로 확인은 약간 다르게 작동합니다. ESM은 NODE_PATH 및 require.extensions를 지원하지 않습니다. 또한 식별자가 항상 URL이라는 사실로 인해 약간의 차이가 발생합니다.

·ES 모듈은 항상 비동기식으로 로드되므로 웹과의 호환성이 최대화됩니다. 이 로딩 스타일은 require()를 통한 CJS 모듈의 동기 로딩과 혼합될 수 없습니다.

·동기 모듈 로딩을 비활성화하면 ES 모듈의 최상위 수준 가져오기 대기에 대한 대체 경로도 남습니다(현재 고려 중인 기능).

3. 이전 버전의 Node.js에서 ES 모듈

Node.js 8.5.0 이전 버전에서 ES 모듈을 사용하려면 John-David Dalton의 @std/esm을 참조하세요.

팁: 잠금 해제 가능한 추가 기능을 활성화하지 않으면 Node.js는 기본 ES 모듈과 100% 호환됩니다.

FAQ

언제 명령줄 옵션 없이 ES 모듈을 사용할 수 있나요?

현재 계획은 Node.js 10 LTS에서 기본적으로 ES 모듈을 사용할 수 있도록 하는 것입니다.

더 읽어보기

Node.js와 브라우저의 ES 모듈에 대한 자세한 내용은 다음을 참조하세요.

·"트랜파일된 ES 모듈을 사양에 더욱 적합하게 만들기" [ES 모듈을 기본적으로 사용하는 것과 Babel을 통해 트랜스파일하는 것 비교 ]

·"모듈 지정자: ES 모듈의 새로운 기능은 무엇입니까?" [왜 .mjs인가? 모듈 지정자는 어떻게 해결됩니까? 등]

·"모듈" [ES 모듈에 대한 심층 장 “ES6 탐색”]

향후 ECMAScript 제안:

·블로그: “ES 제안: import() – 동적으로 ES 모듈 가져오기”

·제안: “import.meta”

관련 권장 사항 :

ES5 예제 javascript의 다중 상속 방법에 대한 자세한 설명

ES6 블록 수준 범위 자세한 설명

ES6 템플릿 문자열 예제 공유

위 내용은 Node.js에서 기본 ES 모듈을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!