使用 WebAssembly + Blazor 的优缺点?



我的问题是:

  • 每次打开 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堆栈和生命周期更有信心。

最新更新