Specs of Dedicated/Shared/ServiceWorkers define "module" type.
let worker = new Worker("worker.js", { type: "module" });
In this type, worker scripts are loaded as ES6 modules and import statement is available on the worker contexts. If the second parameter is omitted, worker scripts are loaded as plain scripts as usual ("classic" type).
Spec of Dedicated/SharedWorkers:
https://html.spec.whatwg.org/multipage/workers.html#module-worker-example
Spec of ServiceWorkers (see "type" in the section):
https://w3c.github.io/ServiceWorker/#service-worker-concept
After the commit on c#30, you can try ES Modules on dedicated workers with the '--enable-experimental-web-platform-features' flag. Note that this feature is still under development and hasn't been tested well yet :)
Interestingly, after the off-the-main-thread module loading patch is landed (see c#37), module workers start fetching the top-level module script with a referrer that is the same with the request's URL. Before the patch, the referrer was the parent document's URL. I'll investigate it next week.
Comment 1 by nhiroki@chromium.org
, Jan 11 2017