Zitat |
Ich fände es natürlich schon besser, dass dann komplett in C# zu machen - schließlich nutz ich ja (auch) deswegen Blazor
|
So ganz stimmt das Verständnis zu Blazor nicht ;-)
Blazor ist kein wirkliches/nur teilweise Replacement für JavaScript, sondern ein WebAssembly-basiertes SPA. Das heisst, dass Blazor mit Angular/React/Rust/Go konkurriert, und nicht mit JavaScript.
Ein WebAssembly SPA hat jedoch bzw. kann JavaScript-Anteile/-Komponenten haben.
Willst Du Blazor machen, dann wirst Du sehr wahrscheinlich auch immer auch JavaScript machen (müssen). Das liegt einfach daran, dass gewisse Dinge entweder von Blazor oder von WebAssembly (als Basis) nicht unterstützt wird oder einfach noch nicht umgesetzt sind, und man dann mit JavaScript arbeiten muss.
"Blazor without JavaScript" funktioniert für die einfachen Fälle, aber ich würde mal behaupten, dass das eher die Marketing-Demos sind als die reellen Projekte. Ich kenn kein Blazor Projekt (selbst einfache Apps) in der realen Welt (zumindest in meiner B2B-Industriekunden-Welt), das ohne JavaScript (Workarounds) auskommt. Die meisten Workarounds hier betreffen aber die UI, einfach weils dafür nichts in WebAssembly gibt.
Schau unter die Haube von Blazor oder vielen Custom Blazor Components, und Du findest Tonnen von JavaScript.
Zitat |
Warum ist das so? bzw. warum sollte das so sein?
|
Auch hier: nicht alle Dinge, die man aus der JavaScript-Welt kennt und standardisiert sind, sind heute in WASM verfügbar. Und nur wenn etwas in WASM verfügbar ist, kann es Blazor auch ohne JavaScript nutzen. Ansonsten ist JS Interop das Fallback.
Bisher gab es insbesondere beim Streaming einfach WebAssembly Limits (WASM in Browser), weshalb der einzige Workaround dann JS Interop war.
Das ist aber nicht nur in Blazor so, sondern gilt für alle WASM "Frameworks", egal ob Rust, Go und Konsorten.
Kann auch sein, dass das mittlerweile geht; Ende letzten Jahres / Anfang diesen Jahres ging das nicht ohne Workarounds.