노드를 자세히 설명하다.js ES6 모듈 처리 방법

3113 단어 nodejses6

1, 두 모듈의 차이


ES6 모듈과 CommonJS 모듈은 큰 차이가 있습니다.
문법에서 CommonJS 모듈은 require () 로드와 모듈을 사용합니다.exports 출력, ES6 모듈은 import와 export를 사용합니다.
사용법상,require () 는 동기적으로 불러옵니다. 뒤에 있는 코드는 이 명령이 실행될 때까지 기다려야 실행됩니다.import 명령은 비동기적으로 불러오거나 더 정확하게 말하면 ES6 모듈은 독립된 정적 해석 단계가 있고 의존 관계의 분석은 그 단계에서 완성된 것이며 맨 밑에 있는 모듈이 처음으로 실행된다.

2. Node.js의 구분


Node.js는 ES6 모듈의 채택을 요구합니다.mjs 접두사 파일 이름입니다.즉, 스크립트 파일에import나 export 명령을 사용하기만 하면 반드시 사용해야 한다.mjs 접미사 이름.Node.만나다mjs 파일은 ES6 모듈이라고 생각하고 기본적으로 엄격한 모드를 사용합니다. 모든 모듈 파일 맨 위에 "use strict"를 지정할 필요가 없습니다.
접두사 이름을 바꾸기를 원하지 않는다면.mjs, 프로젝트 패키지에서 가능합니다.json 파일에서 type 필드를module로 지정합니다.

{
   "type": "module"
}
설정된 후 이 디렉터리에 있는 JS 스크립트는 ES6 모듈로 해석됩니다.
# ES6 모듈로 해석
$ node my-app.js
만약 이때 CommonJS 모듈을 사용한다면, CommonJS 스크립트의 접두사 이름을 모두 바꾸어야 합니다.cjs.type 필드가 없거나 type 필드가commonjs라면.js 스크립트는 CommonJS 모듈로 해석됩니다.
한마디로 요약하면:.mjs 파일은 항상 ES6 모듈로 불러옵니다.cjs 파일은 항상 CommonJS 모듈로 로드됩니다.js 파일의 불러오는 것은package에 달려 있습니다.json 안의 type 필드 설정입니다.
ES6 모듈과 CommonJS 모듈은 혼용되지 않도록 주의하십시오.require 명령은 불러올 수 없습니다.mjs 파일, 오류가 발생합니다.import 명령만 불러올 수 있습니다.mjs 파일.거꾸로mjs 파일에서도require 명령을 사용할 수 없습니다. import를 사용해야 합니다.

3. CommonJS 모듈에 ES6 모듈 로드


CommonJS의 require () 명령은 ES6 모듈을 불러올 수 없습니다. 오류가 발생할 수 있습니다. import () 방법으로만 불러올 수 있습니다.

(async () => {
  await import('./my-app.mjs');
})();
위의 코드는 CommonJS 모듈에서 실행할 수 있습니다.
require () 가 ES6 모듈을 지원하지 않는 이유 중 하나는 동기화 불러오기 때문입니다. ES6 모듈 내부에서 최상위 await 명령을 사용할 수 있기 때문에 동기화 불러올 수 없습니다.

넷째, ES6 모듈에 CommonJS 모듈 로드


ES6 모듈의 import 명령은 CommonJS 모듈을 불러올 수 있지만 전체적으로만 불러올 수 있고 단일 출력 항목만 불러올 수 없습니다.

//  
import packageMain from 'commonjs-package';

//  
import { method } from 'commonjs-package';
이것은 ES6 모듈은 정적 코드 분석을 지원해야 하고, CommonJS 모듈의 출력 인터페이스는module이기 때문이다.exports는 하나의 대상으로 정적 분석을 할 수 없기 때문에 전체적으로만 불러올 수 있습니다.
단일한 출력 항목을 불러오면 다음과 같이 쓸 수 있습니다.

import packageMain from 'commonjs-package';
const { method } = packageMain;

5. 두 가지 형식을 동시에 지원하는 모듈


하나의 모듈은 CommonJS와 ES6 두 가지 형식을 동시에 지원해야 하기 때문에 매우 쉽다.
원본 모듈이 ES6 형식이라면, export default obj와 같은 전체적인 출력 인터페이스를 제공하여CommonJS가 import () 로 불러올 수 있도록 해야 합니다.
원본 모듈이 CommonJS 형식이면 패키지 레이어를 추가할 수 있습니다.

import cjsModule from '../index.js';
export const foo = cjsModule.foo; 
위 코드는 CommonJS 모듈을 전체적으로 입력한 다음 필요에 따라 구명 인터페이스를 출력합니다.
너는 이 파일의 접두사 이름을 바꿀 수 있다.mjs, 또는 그것을 하위 디렉터리에 놓고, 이 하위 디렉터리에 단독 패키지를 넣습니다.json 파일, {type:"module"}를 가리킵니다.
또 다른 방법은 패키지입니다.json 파일의 exports 필드는 두 가지 형식 모듈의 각각의 불러오는 입구를 가리킨다.

"exports":{ 
    "require": "./index.js",
    "import": "./esm/wrapper.js" 
}
위 코드는 require () 와import를 지정합니다. 이 모듈을 불러오면 다른 입구 파일로 자동으로 전환됩니다.
이상은 Node 설명입니다.js에서 ES6 모듈을 처리하는 방법에 대한 자세한 내용은 Node에 대한 것입니다.js가 ES6 모듈의 자료를 어떻게 처리하는지 저희의 다른 관련 글을 주목해 주십시오!

좋은 웹페이지 즐겨찾기