- From: tophf <notifications@github.com>
- Date: Tue, 08 Jun 2021 03:39:24 -0700
- To: w3c/ServiceWorker <ServiceWorker@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/ServiceWorker/issues/1319/856654753@github.com>
>I'd still like you to create a new issue fwiw. It's a steep curve for me. I thought I'd find a contributor who understands the thing I'm talking about first. > What ability do you feel import() is getting in #1585 that doesn't already exist in importScripts? AFAICT, it's the ability to load local/offline code dynamically on demand. Currently, we can't use a dynamic `import()` and we can't use a dynamic (aka postponed/async/late) `importScripts`. Either of them would allow us to have a tiny fast-to-load service worker that runs only the bare minimum of code on an event, imports another specialized script for that type of event/route, and passes the event to that script to handle. Theoretically, just having a dynamic `import()` solves the problem for modern codebases but an async/late `importScripts` is still useful to import legacy code that exposes global variables/functions without going through the hassle of wrapping it into a module using a WebPack plugin, for example. There are thousands of such libraries around that are still useful and not maintained. > If possible please demonstrate with a reduced runnable example of the issue. A contrived example: ```js self.addEventListener('fetch', e => { e.respondWith(import(getScriptNameForRequest(e)).then(m => m.default(e))); }); ``` Similarly for importScripts: ```js self.addEventListener('fetch', e => { if (someCondition(e)) { importScripts('./foo.js'); e.respondWith(foo(e)); } }); ``` In case of Chrome extensions ManifestV3, the only difference is that they have lots of API events. -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/w3c/ServiceWorker/issues/1319#issuecomment-856654753
Received on Tuesday, 8 June 2021 10:41:00 UTC