首頁 > web前端 > js教程 > 內嵌 Web Worker 能否簡化部署和縮小?

內嵌 Web Worker 能否簡化部署和縮小?

Patricia Arquette
發布: 2024-10-29 13:17:02
原創
1050 人瀏覽過

 Can Inline Web Workers Simplify Deployment and Minification?

Web Workers 內聯:繞過單獨的JavaScript 檔案

傳統上,Web Workers 是透過載入單獨的JavaScript 檔案來實例化的,如您所提到的:

<code class="html">new Worker('longrunning.js')</code>
登入後複製

雖然方便,但在使用Closure Compiler 等工具時,這種方法可能會使部署和縮小變得複雜。為了解決這個問題,您可以利用 Blob() 在與主邏輯相同的 HTML 檔案中建立內聯工作器。

使用Blob() 的內聯工作器

以下是建立內聯工作器的方法使用Blob():

  1. 在<script> 中定義您的工作腳本類型為「javascript/worker」的元素:</script>
<code class="html"><script id="worker1" type="javascript/worker">
  // Worker code goes here
</script></code>
登入後複製
  1. 建立一個以工作腳本為內容的Blob 物件:
<code class="html">var blob = new Blob([
  document.querySelector('#worker1').textContent
], { type: "text/javascript" })</code>
登入後複製
  1. 使用window.URL.createObjectURL(blob) 建立一個Worker 物件:
<code class="html">var worker = new Worker(window.URL.createObjectURL(blob));</code>
登入後複製
  1. 在主執行緒中處理來自Worker 的訊息:
在主執行緒中處理來自Worker 的訊息:
<code class="html">worker.onmessage = function(e) {
  console.log("Received: " + e.data);
}</code>
登入後複製
透過發送訊息來啟動工作程序:
<code class="html">worker.postMessage("hello");</code>
登入後複製

這種方法允許您使工作程序代碼與主邏輯保持一致,從而實現獨立且易於部署包裹。

以上是內嵌 Web Worker 能否簡化部署和縮小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板