使用 wasm-bindgen
優化大小
Rust 和 WebAssembly 工作小組的 生命遊戲教學 有一個關於 縮減 Wasm 程式碼大小 的優秀章節,但還有一些 `wasm-bindgen` 特有的項目也需要提及!
首先,`wasm-bindgen` 的設計是輕量級的,並且秉持著「只為您使用的部分付費」的心態。如果您懷疑 `wasm-bindgen` 使您的程式膨脹,那這就是一個錯誤,我們很想知道!請隨時提交問題,即使只是一個問題!
要分析哪些項目
使用 `wasm-bindgen` 時,需要測量大小的檔案有幾個。首先是編譯器本身的輸出,通常位於 `target/wasm32-unknown-unknown/release/foo.wasm`。此檔案未針對大小進行最佳化,您不應測量它。 與 `wasm-bindgen` 連結時,編譯器的輸出在設計上會比它需要的大,`wasm-bindgen` CLI 工具會自動從二進位檔案中剝離所有不需要的功能。
這讓我們剩下兩個主要產生的檔案來測量大小
-
產生的 wasm - 在執行 `wasm-bindgen` CLI 工具後,您會在 `--out-dir` 中取得一個看起來像 `foo_bg.wasm` 的檔案。此檔案是 `wasm-bindgen` 的最終完成成品,它反映了您將發布的應用程式大小。程式碼大小教學中提到的所有最佳化 都將有助於縮減此二進位檔案的大小,所以請盡情嘗試!
-
產生的 JS - 執行 `wasm-bindgen` 後的另一個檔案是 `foo.js` 檔案,這實際上是其他 JS 程式碼導入的檔案。此檔案已經產生為盡可能小(不包括不需要的功能)。但是,JS 並未混淆或最小化,而是仍然可讀和可除錯。預期您會在應用程式中執行 JS 輸出的混淆器或 Bundler,以進一步最小化它。如果您發現任何我們可以進一步縮減輸出 JS 大小(或使其更適合 Bundler 最小化)的方法,請告知我們!
範例
例如,`wasm-bindgen` 儲存庫 包含一個範例 關於產生小型 Wasm 二進位檔案,並展示如何產生用於加總兩個數字的小型 wasm 檔案。