我正在開發一個 JavaScript 應用程式,它將在客戶端(在瀏覽器內部)進行一些計算。但是,后來發現計算非常昂貴,并且在主執行緒中運行它們會阻塞 UI。所以我決定在 web worker 中運行它們。
由于計算的邏輯已經用 JavaScript 模塊撰寫并與 webpack 捆綁在一起(準確地說,它們是作為 react 應用程式的一部分的 typescript 模塊),最自然的方法是使用帶有 type 的 worker module
。但是,與 2022 年一樣,舊版瀏覽器不支持此功能,特別是Firefox不支持。這使我無法使用此功能。
只有經典的 worker,我能想出的唯一解決方案是將所有這些模塊(及其依賴項)復制到一個 js 檔案中,這將是可維護性的噩夢。有沒有辦法解決這個問題(例如,以編程方式生成這個單一的 js 檔案而不會弄亂現有代碼)?特別是,由于我使用的是 webpack,我考慮為 worker 創建一個包含所有模塊代碼的單獨包。但我對 webpack 還不夠熟悉,無法嘗試。
uj5u.com熱心網友回復:
WebPack 版本 5 提供開箱即用的作業人員支持。
worker-loader
在 Webpack 版本 4 中包含類似的作業相對容易。
但是,如果目標是與 web worker 進行對話(即傳遞引數、獲取結果),那么可能值得研究 Googlecomlink
甚至將其集成comlink-loader
到您的 webpack 配置中。
Comlink 使 WebWorkers 變得愉快。Comlink 是一個小型庫 (1.1kB),它消除了思考 postMessage 的心理障礙,并隱藏了您正在與工人一起作業的事實。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/448486.html
標籤:javascript 网页包 网络工作者
上一篇:在舊瀏覽器上使用Promise.allSettled的Typescript目標和庫配置
下一篇:無法發布我的npm包收到此錯誤415UnsupportedMediaType-Nopackage.jsonfoundintarball?