>  기사  >  웹 프론트엔드  >  es 모듈을 노드에서 실행할 수 있나요?

es 모듈을 노드에서 실행할 수 있나요?

WBOY
WBOY원래의
2022-07-04 17:08:211678검색

es 모듈은 node에서 실행될 수 있습니다. node는 버전 8.5.2부터 기본 es 모듈을 지원합니다. 이 기능은 ECMAScript 모듈이라고도 알려진 JavaScript 코드입니다. 재사용 메커니즘이지만 require()가 es 모듈에서 사용되는 경우에는 사용할 수 없습니다.

es 모듈을 노드에서 실행할 수 있나요?

이 문서의 운영 환경: Windows 10 시스템, nodejs 버전 12.19.0, Dell G3 컴퓨터.

es 모듈은 node에서 실행될 수 있습니다

버전 8.5.0부터 Node.js는 기본 ES 모듈을 지원하기 시작하며 이 기능은 명령줄 옵션을 통해 활성화할 수 있습니다. 새로운 기능은 주로 Bradley Farias 덕분입니다.

1. Demo

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

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

· 라이브러리 - 파일 확장자 없음 및 경로 없음 lodash

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

CJS 모듈과의 상호 운용성

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 모듈 가져오기를 기다리는 최상위 수준에 대한 대체 경로도 남습니다(현재 고려 중인 기능).

추천 학습: "

nodejs 비디오 튜토리얼"

위 내용은 es 모듈을 노드에서 실행할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.