Blazor Webassembly、Blazor 组件库 之初体验

本文介绍了如何使用C#替代JavaScript进行前端开发,以Blazor.Diagrams库为例,展示了Razor文件与ComponentBase.BuildRenderTree的等价性。通过创建.netstandard类库实现Blazor组件化,并探讨了调试体验和Blazor的未来前景。
摘要由CSDN通过智能技术生成

目标

    用 C# 代替 javascript 做前端开发。

Hello World项目

    选了 Blazor.Diagrams 作为上手程序,这是一个小巧但例子很丰富的流程图绘制库,内核设计比较清晰,扩展性强。

Razor 文件与 ComponentBase.BuildRenderTree 干一样的活

    Blazor.Diagrams库里面混合使用了 Razor 文件和 **Renderer.cs 文件,根据这篇文章的解释,Razor文件在Blazor里面会被编译成同名C#类,得到的代码和在 ComponentBase.BuildRenderTree 里面手写的一样。

@page "/counter"

<h1>Counter</h1>

<p>Current count: @currentCount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {
    private int currentCount = 0;

    private void IncrementCount()
    {
        currentCount++;
    }
}

   编译之后的结果:

[Route("/counter")]
public class Counter : ComponentBase
{
    private int currentCount = 0;

    protected override void BuildRenderTree(RenderTreeBuilder builder)
    {
        builder.AddMarkupContent(0, "<h1>Counter</h1>\r\n\r\n");
        builder.OpenElement(1, "p");
        builder.AddContent(2, "Current count: ");
        builder.AddContent(3, this.currentCount);
        builder.CloseElement();
        builder.AddMarkupContent(4, "\r\n\r\n");
        builder.OpenElement(5, "button");
        builder.AddAttribute(6, "class", "btn btn-primary");
        builder.AddAttribute<MouseEventArgs>(7, "onclick", 
		EventCallback.Factory.Create<MouseEventArgs>(this, 
		new Action(this, Counter.IncrementCount)));
        builder.AddContent(8, "Click me");
        builder.CloseElement();
    }

    private void IncrementCount()
    {
        this.currentCount++;
    }
}

Blazor 组件库(Component Library)

    前端开发的趋势是组件化,可以创建 .net standard 类库(对应vs2019模板类型:Razor类库) ,把Blazor组件包装起来,然后在Blazor Server或者Blazor Webassembly里面共享,Blazor.Diagrams的Demo就是这么设计的。

    创建完 .net standard 2.1 类库后,我发现不能处理.razor 文件,分析csproj文件后发现两处需要修改:

  1. Sdk 由 Microsoft.NET.Sdk 修改为 Microsoft.NET.Sdk.Razor;(如果创建的是 Razor类库 这一步省略)
  2. 添加 <RazorLangVersion>3.0</RazorLangVersion>。

    保存后这个.net standard类库就成了 Blazor组件库了,可以添加 razor 文件,也可以给 **.razor 文件添加 **.razor.cs 代码文件,会被自动合并。

<Project Sdk="Microsoft.NET.Sdk.Razor">

  <PropertyGroup>
    <TargetFramework>netstandard2.1</TargetFramework>
    <RazorLangVersion>3.0</RazorLangVersion>
  </PropertyGroup>


</Project>

_framework  _content 来定位css/js

   在 Server 的 Home 或 WebAssembly 的 index 文件中,可以引用 Blazor 组件库里面的css或js资源。

   在 WebAssembly  wwwroot/index.html 文件中,你会发现有一行 <script src="_framework/blazor.webassembly.js"></script>,_framework 指向的是编译后生成的 bin\Debug\netstandard2.1\wwwroot\_framework 文件夹。

   根据你使用的组件,可以向 index.html 添加<link href="_content/Z.Blazor.Diagrams/style.css" rel="stylesheet" />,这里面的 _content 指向引用的组件库 Z.Blazor.Diagrams 下面的 wwwroot 目录。

使用体验

    运行中报错未将对象引用设置到实例,Blazor 没有指向出错的代码,在cs中加断点也无法对变量进行监视,与纯cs开发相比不好调试(老外推荐在Blazor Server模式下调试,然后在Wasm模式下运行),与js比较开发效率提高了,语法错误在编译时能够发现,但运行时错误一样不好定位。

    Blazor的未来取决于组件库是不是丰富,微软要是买几个商用的库(如syncfusion, infragistics)免费给大家用就爽了。

### 回答1: Blazor WebAssembly是一种Web前端框架,它使用C#和.NET运行时来构建单页面应用程序(SPA)。与传统的JavaScript框架不同,Blazor WebAssembly允许开发人员使用C#来编写客户端代码,同时仍然能够实现Web应用程序的所有功能。它的主要优点是易于使用、高性能、可维护性和跨平台支持。Blazor WebAssembly还提供了丰富的UI组件和可扩展性,使开发人员能够快速构建复杂的Web应用程序。 ### 回答2: Blazor WebAssembly 是一个全新的前端框架,它是由微软推出的。Blazor WebAssembly 的基本思想是通过将 WebAssembly 技术整合到浏览器中,可以直接运行 .NET 代码,通过这种方式来写 SPA(单页应用)。 SPA 指前端不修改页面的情况下,通过 JavaScript 来展示不同的内容。 Blazor WebAssembly 的主要优势是可以写 C# 代码,并且在浏览器中直接运行,省去了 JavaScript 编写的时候需要做的很多工作。在 Blazor WebAssembly 中,通过将 .NET 代码编译成 WebAssembly 字节码,然后将其嵌入到 HTML 页面中,就可以在浏览器中直接运行。 与传统的 Web 应用相比,Blazor WebAssembly 可以使用面向对象的技术,并且可以更好地管理复杂的代码和数据。此外,它还可以轻松地访问后端数据,用于实现灵活的用户界面。 Blazor WebAssembly 可以被用作构建 Web 应用程序的主要工具,在浏览器端提供更好的用户体验。因此,它是现在非常流行的前端框架之一,尤其适用于那些需要更好与 Web 框架集成的企业应用程序。 ### 回答3: Blazor WebAssembly是一个全新的Web开发框架,它使用了WebAssembly这一新技术,使得在Web前端开发领域中,C#语言也可以得到广泛应用。Blazor可以在Web前端通过C#进行开发,而不必再局限于JavaScript,这为开发人员提供了更大的选择空间和效率提升。 Blazor的主要优点之一是,相较于传统的JavaScript框架,它可以在不依赖JavaScript的情况下完成Web前端开发,同时提供了更为可靠的开发体验。Blazor可以借助C#语言消除了在开发过程中大量的JavaScript代码的问题,简化了前端开发过程。 另一个重要的优点是,Blazor将C#语言和WebAssembly这一新技术结合起来,提供了更高效的性能和可靠性。在网络较慢或设备配置较低的情况下,使用Blazor可以提供更好的用户体验,而且减少了对后端的依赖。 在使用Blazor开发Web应用时,可以利用已有的 .NET技术栈,比如Entity Framework、LINQ等进行开发,同时还可使用.NET Core的API和扩展,在开发过程中充分发挥C#语言的优势。 总之,Blazor WebAssembly是一种全新的Web开发框架,它可以在Web前端开发语言上提供更大的选择空间,同时可以借助C#语言和WebAssembly提高开发效率,使用Blazor开发Web应用可以简化开发过程、提高应用的性能、可靠性和用户体验。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值