iT邦幫忙

鐵人檔案

2023 iThome 鐵人賽
回列表
Modern Web

網頁的另一個大腦:從基礎到進階掌握 Web Worker 技術 系列

Javascript 單執行緒模型使得程式的設計和邏輯相對簡單。開發者不需要擔心併發問題,避免了許多可能的錯誤。但隨著近年 AI、元宇宙、3d 技術的發展,需要利用 Javascript 大量運算的時候可能越來越多,這時就是擅長平行運算的 web worker 出場的時機了。希望藉由這一系列的文章介紹目前 web worker 的發展狀況,以及提出一些實例分析 web worker 適合用到的場景。

鐵人鍊成 | 共 30 篇文章 | 10 人訂閱 訂閱系列文 RSS系列文
DAY 1

[Day 1] 網頁的另一個大腦:從基礎到進階掌握 Web Worker 技術 - 前言

最近工作上有一些需求要將 2D 的圖片做影像處理,最後要達到類似圖片模糊的效果,而使用者可以藉由 slider 調整模糊的比例,從 0~100%,數值越大的話圖...

2023-09-15 ‧ 由 bcjohn 分享
DAY 2

Web worker 介紹

Javascript 最初是設計在瀏覽器上執行的語言,而瀏覽器上會有各種的使用者操作,像是輸入文字、點擊按鈕等,這些操作最終都會反映在畫面上的渲染,為了維持畫面...

2023-09-16 ‧ 由 bcjohn 分享
DAY 3

Dedicated worker 基本用法

Dedicated worker 是 Web worker 中的一個種類,特色是 Dedicated worker 線程只能被當下創立的主線程操作使用。而主線程...

2023-09-17 ‧ 由 bcjohn 分享
DAY 4

在 Web worker 中使用外部套件

importScripts 在 worker 中可以使用 importScripts 將外部的套件引入進來,這樣會將 script 裡的變數都以全域的方式匯入...

2023-09-18 ‧ 由 bcjohn 分享
DAY 5

使用 structuredClone 將數據複製到 Web worker

主線程與 worker 線程之間通常會使用 postMessage 傳遞資料,為避免不同的線程操作同一筆資料出現同步問題,實際上背後會執行一個叫做 struct...

2023-09-19 ‧ 由 bcjohn 分享
DAY 6

postMessage 速度測試

昨天提到 postMessage 背後使用了 structuredClone 算法將資料 深複製 (deep copy) 後再進行傳遞,雖然這樣保證了資料的完整...

2023-09-20 ‧ 由 bcjohn 分享
DAY 7

可轉移的物件 - Transferable objects

昨天我們瞭解到使用 postMessage 時,隨著傳遞的資料越大,耗費的時間就會越久,雖然在桌機上沒什麼問題,但到了手機這種低硬體的環境上,就可能會有效能問題...

2023-09-21 ‧ 由 bcjohn 分享
DAY 8

Transferable objects - ArrayBuffer

ArrayBuffer 大概是 Transferable objects 中最常見的一種了,雖然也是矩陣,但不同於一般使用的 Array,ArrayBuffer...

2023-09-22 ‧ 由 bcjohn 分享
DAY 9

Transferable objects - MessagePort (Channel messaging)

MessagePort 是 HTML 中 Channel Messaging API 的接口,用途拿來進行雙向溝通傳遞資料,有點類似 addEventListe...

2023-09-23 ‧ 由 bcjohn 分享
DAY 10

Transferable objects - MessagePort

昨天學習了 Channel messaging 在主頁面與 iframe 間的訊息傳遞,而今天就讓我們來看看 MessagePort 怎麼在 web worke...

2023-09-24 ‧ 由 bcjohn 分享