我的问题是:
回答所有这些问题,是否有任何理由在Javascript上使用Blazor + Wasm?
答案 0 :(得分:1)
这些是您可以轻而易举地搜索到的多个问题,我想人们对此表示反对。我会花时间回答您的问题。
每次打开SPA都会下载运行时吗?即使已缓存,Web应用程序的下载运行时间也不会花费太多时间吗?
正如您在webassembly.org上所读到的那样,webassembly(进一步称为Wasm
)是具有开放式API的基于堆栈的虚拟机的二进制指令格式,并已交付给Chrome,Edge,Firefox和WebKit。如@HenkHolterman所述,除非客户端清除其缓存,否则至少需要一次加载一次小的运行时。这意味着客户端第一次加载基于Wasm
的Web应用程序时可能会有更糟糕的体验,这种体验有多糟糕,我不能确切地说,使用Fiber 2,5 mb并不明显,使用edge / 2g或gsm / 3g移动连接可能很重要。
是否将其他程序集(Nuget,C ++库等)发送到浏览器?如果是这样,是不是太昂贵了,是否会导致应用程序打开太长时间?
在构建/编译Blazor
应用程序时,通常会还原所有相关程序集和程序包,并且这些程序集和程序包在部署后会静态地托管在主机上。客户端将不需要任何其他程序集。
与V8上的Javascript相比,性能是否足够好?
这取决于。 Wasm
当前不了解DOM,因此Blazor
会在需要时使用Wasm
渲染页面。应该清楚的是,使用JavaScript
可以更快地处理大页面中的单个或几个DOM元素。除此之外,Wasm
渲染整个页面的速度更快,并且可能最适合需要这种性能的Web应用程序,例如游戏或3D渲染。对于正常的浏览体验而言,差异太小了;如果应用程序设计不佳,则使用两者中的任何一个都将是不利的。
与Razor相比有什么惊人的区别吗?
Blazor
是一个专注于应用程序交付的框架,而Razor Pages
是与MVC相比作为一种新的.Net
开发方法而引入的。现在Blazor
使用与Razor
非常相似的语法,简化了事件调用之类的操作,并统一了一个文件中的视图和代码,但是主要的区别实际上是可以提供Blazor
-rside或客户端,而Razor
仅可服务第一者。这是您在两者之间做出决定时要考虑的问题。
话虽这么说,您应该知道WebAssembly并未试图取代JavaScript,如其FAQ中所述,它是对JavaScript的补充。决定是否在任何Blazor
框架上使用JavaScript
取决于您是否要依赖于JavaScript
,以及您的开发团队是否对C#
更有信心。 .Net
堆栈和生命周期。