Rumah >hujung hadapan web >tutorial js >Bolehkah Pekerja Web Dalam Talian Memudahkan Penyerahan dan Pengurangan?

Bolehkah Pekerja Web Dalam Talian Memudahkan Penyerahan dan Pengurangan?

Patricia Arquette
Patricia Arquetteasal
2024-10-29 13:17:021068semak imbas

 Can Inline Web Workers Simplify Deployment and Minification?

Pekerja Web Dalam Talian: Memintas Fail JavaScript Berasingan

Secara tradisinya, pekerja web dibuat seketika dengan memuatkan fail JavaScript yang berasingan, seperti yang anda nyatakan:

<code class="html">new Worker('longrunning.js')</code>

Walaupun mudah, pendekatan ini boleh merumitkan penggunaan dan pengurangan apabila menggunakan alatan seperti Closure Compiler. Untuk menangani perkara ini, anda boleh memanfaatkan Blob() untuk mencipta pekerja sebaris dalam fail HTML yang sama seperti logik utama anda.

Pekerja Sebaris dengan Blob()

Begini cara anda boleh mencipta pekerja sebaris menggunakan Blob():

  1. Tentukan skrip pekerja anda dalam elemen dengan jenis "javascript/worker":
<code class="html"><script id="worker1" type="javascript/worker">
  // Worker code goes here
</script></code>
  1. Buat objek Blob dengan skrip pekerja sebagai kandungannya:
<code class="html">var blob = new Blob([
  document.querySelector('#worker1').textContent
], { type: "text/javascript" })</code>
  1. Buat objek pekerja menggunakan window.URL.createObjectURL(blob):
<code class="html">var worker = new Worker(window.URL.createObjectURL(blob));</code>
  1. Kendalikan mesej daripada pekerja dalam urutan utama anda:
<code class="html">worker.onmessage = function(e) {
  console.log("Received: " + e.data);
}</code>
  1. Mulakan pekerja dengan menghantar mesej:
<code class="html">worker.postMessage("hello");</code>

Pendekatan ini membolehkan anda mengekalkan kod pekerja anda selaras dengan logik utama anda, menjadikannya serba lengkap dan mudah digunakan pakej.

Atas ialah kandungan terperinci Bolehkah Pekerja Web Dalam Talian Memudahkan Penyerahan dan Pengurangan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn