2017-12-31 283 views
7

Mozilla Developer Network (MDN) 설명서를 기본 소스로 사용하여 JavaScript Web Worker API에 대해 배우고 있습니다. The documentation suggests 새 작업자의 생성자는 type 매개 변수를 허용합니다. 이 type 매개 변수는 동일한 문서에 따라 classic 또는 module 값을 허용 할 수 있습니다."고전적"웹 워커와 "모듈"웹 워커의 차이점은 무엇입니까?

설명서에 classicmodule의 차이점이 설명되어 있지 않습니다. classicmodule을 사용하고 두 가지 "유형"의 근로자간에 어떤 행동상의 차이점이 있을까요?

답변

4

module 유형은 대략 type="module" attribute does for a script tag과 같은 목적으로 사용됩니다. 브라우저가로드되는 작업자 스크립트가 ES6 모듈 (구문 분석 및 실행 방법을 알기 위해 필요한 메타 데이터 인 as this article goes into a bit)임을 알립니다.

작업자 모듈이 ES6 모듈 (가능하면 import 문 포함) 인 경우 사용합니다. 또한 CORS가 활성화 된 경우 다른 출처에서 작업자를로드 할 수 있다는 보너스가 있습니다 (고전적 작업자는 import 문을 사용하지 않아도 매력적인 기능 일 수 있음).

HTML Living Standard - Using a JavaScript module as a worker에서 : 우리의 예제

모두 지금까지 고전 스크립트를 실행 노동자를 보여줍니다. 대신 모듈 스크립트를 사용하여 작업자를 인스턴스화 할 수 있습니다. 모듈 스크립트를 사용하면 일반적인 이점을 얻을 수 있습니다. JavaScript 가져 오기 문을 사용하여 다른 모듈을 가져 오는 기능. strict 모드. 작업자의 전역 범위를 오염시키지 않는 최상위 선언.

이러한 모듈 기반 근로자는 기존 근로자와 비교하여 출생지 간 콘텐츠에 대한 제한 사항이 다릅니다. 클래식 작업자와 달리 모듈 작업자는 CORS 프로토콜을 사용하여 노출 된 스크립트가 원본 스크립트를 사용하여 인스턴스화 될 수 있습니다. 또한 importScripts() 메서드는 모듈 작업자 내부에서 자동으로 실패합니다. 일반적으로 JavaScript 가져 오기 명령문이 더 나은 선택입니다.

현재로서는 ES6 모듈에 대한 브라우저 지원이 그다지 좋지 않으므로 프로덕션에서는 사용하지 않을 것입니다.