|
| ▲ | esperent 10 months ago | parent | next [-] |
| I scanned the docs but don't have time to deep dive, and I couldn't see: how does this access the DOM? Does it call JS DOM API functions from rust? And what's the performance like for doing that? |
| |
| ▲ | rendaw 10 months ago | parent [-] | | Not specific to leptos. My understanding is very rough, but rust's wasm-bindgen generates a javascript translation layer for the wasm. (Roughly) Javascript objects are stored in a lookup table and rust gets the handle (a number). Rust makes calls with that handle, which get translated back into javascript calls using the actual object. Similarly (I think) proxy objects are created for rust objects so javascript can call rust. I was benchmarking some dom manipulation code and saw large GC pauses corresponding to the number of `element.classList` accesses I was doing from rust. I think the answer is that performance isn't great (compared to if browsers provided a wasm-native api that didn't have to go through javascript), but if you're doing a lot of calculation in rust or are writing a typically small UI it's not a significant cost... may be more important for graphics and visualization work. |
|
|
| ▲ | wiseowise 10 months ago | parent | prev [-] |
| > As time goes on WebAssembly will keep displacing JavaScript. We've entered the era of Zombie JavaScript. Just like Java has been dead for 20 years, now it is JS turn. Delusional. |
| |