iT邦幫忙

鐵人檔案

2025 iThome 鐵人賽
回列表
Rust

把前端加速到天花板:Rust+WASM 即插即用外掛 系列

30 天用 Rust 打包 WASM,做出 3 個可直接在瀏覽器用的外掛:Markdown 超速轉換、圖片壓縮/縮放、超大 CSV 串流解析。提供 React/Next 範例與 Web Worker 版本,一行 import 即用。

參賽天數 26 天 | 共 26 篇文章 | 3 人訂閱 訂閱系列文 RSS系列文
DAY 11

Day 10|Sobel 邊緣偵測:抓到你了,臭邊緣!

寫完銳化、卷積之後,下一步就是「如何找出邊緣」。Sobel 幾乎是所有影像處理教材裡的第一個邊緣偵測器。它的概念很簡單~用兩個小小的 3×3 卷積核,分別測量水...

2025-09-25 ‧ 由 ali8888 分享
DAY 12

Day 11|Result 的錯誤物語:達達的馬蹄與 {code, message}

到目前為止,我們把重心放在一些酷酷的地方(寫了很多功能與演算法)但錯誤可觀測性也重要。WASM 這一端如果只是 return Err(JsValue::from...

2025-09-26 ‧ 由 ali8888 分享
DAY 13

Day 13|請你們家勞公出來喔~(Web Worker

到目前為止,我們所有的影像處理都在瀏覽器 主執行緒 上跑。這代表 UI、事件、排版、繪圖,還有那堆重計算,全都擠在同一條線。結果就是:一旦你對一張 4K 圖片做...

2025-09-27 ‧ 由 ali8888 分享
DAY 14

Day 13|人多力量大! Web Worker 多工 + 佇列

Day 12 我們已經把影像管線搬進 Web Worker,讓主執行緒只管 UI,所有運算交給 Worker,不卡 UI。但單工有個問題:如果你在 UI 快速連...

2025-09-28 ‧ 由 ali8888 分享
DAY 15

Day 15|為什麼 .wasm 會變胖?怎麼減?Cargo 與 wasm-opt 的分工

前幾天我們把功能越寫越多(多個濾鏡、錯誤格式、Worker 版…),結果 pkg/*.wasm 越來越胖。今天把體重管理講清楚:哪裡在長肉、誰負責減肥、怎麼操作...

2025-09-29 ‧ 由 ali8888 分享
DAY 16

Day 16|把 memory bound 的坑填起來

做這個套件,算子本身通常是 O(wh) 的線性時間;真正拖慢的東西之前有發現不是演算法,而是搬來搬去的過程,在 JS 與 Wasm 兩個記憶體世界來回拷貝像素。...

2025-09-30 ‧ 由 ali8888 分享
DAY 17

Day 17|把「住在你家」的位元組管理好

到這裡,我們已經把資料流關在 Wasm,互動操作幾乎不再跨界拷貝。接下來的現實問題是:這些像素會住多久、住在哪裡、什麼時候要請它們搬家。如果不把「生命週期」講清...

2025-10-01 ‧ 由 ali8888 分享
DAY 18

Day 18|API 契約 v2:同步入口 vs. Worker 包裝,為什麼要「腳踏兩條船」

到目前為止,我們的 API 大致長這樣: Rust 端暴露一堆 #[wasm_bindgen] 函式,直接跑影像管線; 前端可以同步呼叫,拿到 Uint8Ar...

2025-10-02 ‧ 由 ali8888 分享
DAY 19

Day 19|把錯誤變成導航:DX 的三把螺絲

到目前為止,我們把 API 的錯誤訊息改成 { code, message } 格式,這樣 UI 可以更好地分流處理。但這只是「能看懂」。如果再往前一步,錯誤就...

2025-10-03 ‧ 由 ali8888 分享
DAY 20

Day 20|首頁活化

今天我們把首頁做成一個單頁 Demo,選圖、三顆按鈕(灰階/模糊/銳化)、即時顯示尺寸與處理時間,並且沿用前幾天做好的零拷貝資料流與錯誤訊息協議。可以把下面整包...

2025-10-04 ‧ 由 ali8888 分享