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