最近、いくつかのプロジェクトでWebAssemblyの使用を開始しました。 WasmはjavaScriptより速いと聞いたので、これを行っています。
実際に最初のWasmプロジェクトを開始したとき、C++でDOMを操作する方法がわからないことに気付きました。
Wasmを使用してこれを行う方法はありますか?
残念ながら、DOMにはブラウザのメインJavaScriptスレッド内でのみアクセスできます。 Service Workers、Web Workers、およびWeb AssemblyモジュールはDOMアクセスを持ちません。 WASMから取得する最も近い操作は、メインスレッドに渡されてレンダリングされる状態オブジェクトを、 Preact /Reactのような状態ベースのUIコンポーネントで操作することです。
JSONシリアル化は、 postMessage()
または Broadcast Channels で状態を渡すために最もよく使用されます。ビットパッキングまたはバイナリオブジェクトを Transferrable
ArrayBuffersとともに使用すると、JSONのシリアル化/非シリアル化のオーバーヘッドを回避する、よりパフォーマンスの高いメッセージを得ることができます。