Web Worker 不需要註冊,Service Worker 才需要

new Worker(url) 就是啟動——沒有 DI container、沒有 provider、沒有登記處。要 register() 的是 Service Worker。

Service WorkerWeb Worker
建立navigator.serviceWorker.register('/sw.js')new Worker(url)
生命週期跟分頁無關,關掉瀏覽器再開還在綁在建立它的分頁
安裝有 install / activate 階段與版本更新沒有這些概念
作用範圍有 scope,一個 origin 一份沒有 scope,想開幾個開幾個
為什麼要註冊它要在沒有分頁時也能被瀏覽器喚醒,必須登記在 origin 層級不需要——它只為這個分頁活著

那一行執行的當下:瀏覽器抓那個 JS 檔 → 開一條新執行緒 → 執行檔案內容 → worker 裡的 self.onmessage 掛上去 → 開始等訊息。

打包器的 worker 設定不是註冊,是 build 期的字串改寫 → 打包器靠 AST 形狀認出 worker,改寫法會靜默失效

記憶體上兩者都不會另外拿到配額 → Worker 與分頁共用同一份記憶體配額