Blazor VS JavaScript:Blazor 能否取代 JavaScript 成为 Web 开发的首选框架

5,778 阅读5分钟

原文链接:blog.bitsrc.io/frontend-de…

开始吧

在过去的数年中,JavaScript 一直是开发单页应用最受欢迎和使用最广泛的语言。但是近期,微软推出了一个名为 Blazor 的新框架,让我们可以使用 C# 开发基于浏览器的应用。在这篇文章中,我将首先介绍 Blazor,其热度背后的原因,并且将其与 JavaScript 作比较。

Blazor 是什么?

Blazor (Browser+Razor) 是微软推出的一个新的 web 开发框架,让我们使用 C# 和 Razor 语法以及 HTML 和 CSS 去开发基于浏览器的应用程序。

在此之前,开发者必须在服务端执行 Razor 视图才能在浏览器中显示 HTML,但现在 Razor 视图支持在客户端执行。

由于 Blazor 使用了 WebAssembly,我们不需要再安装任何第三方插件即可在浏览器中执行。因此在 Blazor 中,你可以使用 C# 同时开发客户端及服务端,并在两者之间共享库及代码以使开发体验更为舒适。

Screenshot by Auther: Sample Blazor Code

热度背后的原因

Blazor 在短时间内热度排名上升,大家已经开始将其与流行的 JavaScript 框架作比较,而关于客户端 web 开发的未来又有着很多相关的讨论,这些讨论和对比使得 Blazor 很受欢迎,那么让我们看看 Blazor 的独特之处。

正如我一开始提到的,Blazor 的主要优点在于让我们可以使用 C# 开发基于浏览器的应用。在过去的几年里,JavaScript(或 TypeScript)一直是前端主要的编程语言,如果你是一名 .NET 开发者,你还必须学习 JavaScript 才能成为一名全栈开发者。而使用 Blazor,你可以使用 C# 同时开发服务端及客户端,对我个人而言,这就是 Blazor 带来的主要优势。

与 JavaScript 不同,Blazor 会被预编译为一种中间语言。对于在浏览器中运行的高性能要求的应用,这个特性会带来显著的收益。另外,Blazor 可以在需要更多处理性能的时候离线运行,比如 PDF 生成、游戏算法等等。

除此之外,Blazor 还有许多的特性和优点:

  • Blazor 无需浏览器插件
  • 可以使用完整的 .NET 调试
  • 使用最新的 web 浏览器功能
  • 构建简单易懂的 UI 模型
  • 浏览器兼容性(即使是较老的版本)
  • 可用依赖注入
  • 在客户端和服务端之间共享代码

JavaScript Vs. Blazor

接下来是文章最关键的部分,Blazor 会取代 JavaScript 吗?JavaScript 能否稳固自己的地位?这是每个人都想得到答案的问题。我认为现在对这些问题直接给出预测或结论为时尚早。但我们可以将一些领先的 JavaScript 框架与 Blazor 作对比,看看它们之间的差异。

Blazor vs. React

许多人认为 React 是 web 组件开发最佳的库,尽管比较它们二者很困难,我们必须承认,React 是成熟的,并在过往实践中的良好表现及其强大的社区获得了人们的尊重。

React 的生态蓬勃发展,库和框架简化了 React 应用的开发流程。在这些工具和库中,我认为像 Bit (Github) 这样的代理平台可以帮助管理和共享 React 组件。

这些库让 React 成为一种 “通用语言”,使其能为 web、CLIiOS & AndroidWindows 等各个平台提供应用程序,再加上诸如 Bit 等组件共享工具,使得 React 难以被超越。

相比之下,Blazor 还稍显稚嫩,但它带来了成熟的 Razor 的特色。所以我们无需认为它对于开发者来说是全新的技术。并且由于 Blazor 使用 C# 进行开发,对于每一位 .NET 开发者来说过渡都会很快。尽管 React 拥有着各种各样成熟的特性及优势,抛开 Blazor 的年龄来看,我们也可以注意到其提供的一些高级的功能。

  • 与 React 类似,我们也可以将 Blazor 部署为静态文件
  • 可以使用 NuGet 依赖
  • 我们可以在客户端 & 服务端使用相同的组件(当然使用 JS/TS 也是可以的)
  • Blazor 内置对路由、校验及表单处理的支持

这些只是 Blazor 提供特性的一部分。但是基于现状,如果你的团队精通 JavaScript ,继续使用 React 是最好的选项。另一方面,如果你对 .NET 比 JavaScript 更感兴趣,并且想要开始一个新的项目,那么 Blazor 会是一个很好地选择。

Blazor vs. Angular

Angular 是另一个备受欢迎的单页面应用 JavaScript 框架。相比于 React,它更像是一个完整的框架而非一个库。Angular 提供了客户端 MVC 架构以简化开发及测试的流程。说到 Angular 和 Blazor 之间的差异,Angular 在各个方面处于领先,因为它出名、稳定并可以投入生产。而且,Angular 拥有 PWA 的完整支持,但 Blazor 的服务端尚未完全兼容。此外,由于 Angular 使用了 TypeScript,对于 C# 开发人员来说,它相比 JavaScript 更容易被理解和接受。Angular 占尽优势,我找不到 Blazor 中任何开创性的特性,来吸引那些精通 TypeScript 的人转到 Blazor 中。