2017-10-27 3 views
0
  1. 현재 모든 모듈 로딩 정의 사이에 우승자가 있습니까? CommonJS, AMD, UMD, ES6. 그리고 우리가 사용해야하는 모듈 로더는 무엇입니까?
  2. ng4의 각도 클럭은 SystemJS 모듈 로더를 사용합니까?
+0

각도는 기본적으로'module loader/bundler'로'webpack'을 사용하고 있습니다. – Orlandster

+0

@ Orlandster, 모듈 묶음 기, 로더가 아닙니다. 요청시 모듈을로드 할 수 없습니다. –

답변

1

JavaScript를 작성하는 경우 확실히 ES6 모듈 (ESM)을 사용해야합니다. 그러나 이제는 브라우저에서 ESM이 구현되는 방식에 몇 가지 제한이 있습니다. 동적 가져 오기는 Chrome에서만 지원되며 명명 된 모듈 인 AFAIK는 사양에 맞지 않습니다. 모듈 로더를 사용해야합니다. 필요에 따라 모듈을로드하기 위해 SystemJS를 사용하고 있습니다. 불행히도 ESM을 지원하지 않으므로 먼저 SystemJS가 지원하는 형식으로 변환해야합니다. CommonJS는 NodeJS에서 사용되는 형식과 동일하므로 더 잘 알고 있습니다. 변환은 TypeScript에 의해 편리하게 수행됩니다. 위에서 언급 한 제한 사항을 포함하여 브라우저에서 ESM을 완벽하게 지원하면 대부분의 프로젝트에서 SystemJS 종속성을 제거 할 수 있습니다.

그러나 대부분의 프론트 에디션 응용 프로그램은 이제 모듈 번들 Webpack을 사용합니다. ESM 모듈을 자체 모듈 형식 (CommonJS 기반)으로 변환하므로 별도의 모듈 로더가 필요하지 않습니다. 그러나 Webpack은 빌드하는 동안 모르는 모듈을로드 할 수 없으므로 런타임 중에 동적 타사 모듈을로드해야하는 경우 SystemJS를 사용해야합니다. 그게 내가하고있는 응용 프로그램의 경우입니다.

+0

안녕하세요, "런타임 중에로드되는 동적 타사 모듈"은 Webpack이 동적으로 모르는 모듈을로드 할 수 없지만 SystemJS는 수행 할 수 있음을 의미합니다. 이것은 또한 AMD/RequireJS가 좋은 것입니까? - 동적 모듈로드? – Hao

+0

@Hao, 네, 둘 다 그렇게 할 수 있지만 SystemJS는 지금 가장 선호되는 솔루션입니다 –