首页 > 其他分享 >再学Blazor——概述

再学Blazor——概述

时间:2023-10-13 10:55:43浏览次数:25  
标签:currentCount Web 再学 builder 概述 应用 UI Blazor

简介

Blazor 是一种 .NET 前端 Web 框架,同时支持服务器端呈现和客户端交互性。

  • 使用 C# 语言创建丰富的交互式 UI
  • 共享前后端应用逻辑
  • 可以生成混合桌面和移动应用
  • 受益于 .NET 的性能、可靠性和安全性
  • 需要有 HTML、CSS、JS 相关基础(开发 UI 框架的话)
  • 组件化设计,类似 React、Vue 等前端框架

组件

Blazor 应用基于组件。 Blazor 中的组件是指 UI 元素,例如页面、对话框或数据输入窗体,甚至小到一个输入框。

  • 定义灵活的 UI 呈现逻辑
  • 处理用户事件
  • 可以嵌套和重用 (大大提高开发效率和维护成本)
  • 可作为 Razor 类库或 NuGet 包共享和分发
  • 有 Razor 标记页(.razor文件)和纯 C# 高级写法两种编写形式

1. Razor 常用写法

此写法为 HTML 和 C# 混合开发,HTML 结构清晰,示例如下:

<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++;
    }
}

2. C# 高级写法

如下代码为纯 C# 高级写法,这段代码也是 .razor 文件编译后生成的格式。如果你反编译 Razor 语法写的组件dll,发现上述 HTML 和 C# 混合开发的组件代码与下面类似。

class Counter : ComponentBase
{
    private int currentCount = 0;

    protected override void BuildRenderTree(RenderTreeBuilder builder)
    {
        //构建 h1 标签
        builder.OpenElement(0, "h1");
        builder.AddMarkupContent(1, "Counter");
        builder.CloseElement();

        //构建 P 标签
        builder.OpenElement(0, "p");
        builder.AddMarkupContent(1, $"Current count: {currentCount}");
        builder.CloseElement();

        //构建按钮
        builder.OpenElement(0, "button");
        builder.AddAttribute(1, "class", "btn btn-primary");
        builder.AddAttribute(2, "onclick", EventCallback.Factory.Create(this, IncrementCount));
        builder.AddMarkupContent(3, "Click me");
        builder.CloseElement();
    }

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

上述 BuildRenderTree 方法代码较长,我们可以将 UI 元素封装成扩展方法,button封装成组件,这样构建组件既方便又可读。使用扩展方法后组件代码改进如下:

class Counter : ComponentBase
{
    private int currentCount = 0;

    protected override void BuildRenderTree(RenderTreeBuilder builder)
    {
        //构建 h1 标签
        builder.H1("Counter");
        //构建 P 标签
        builder.P($"Current count: {currentCount}");
        //构建按钮
        builder.Component<Button>()
               .Set(c => c.Style, "btn btn-primary")
               .Set(c => c.Text, "Click me")
               .Set(c => c.OnClick, IncrementCount)
               .Build();
    }

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

Web 应用

Blazor Web应用提供了一种基于组件的体系结构,该体系结构具有在单个解决方案中实现服务器端呈现和完整的客户端交互性的能力。在这种体系结构中,你可以在服务器端和客户端呈现模式之间进行切换,甚至可以在同一页面中混合使用这两种模式。

Blazor Web应用可以通过静态呈现来自服务器的HTML内容来响应,这种方式的优点是能够快速将UI传送到浏览器。由于UI呈现在服务器上快速执行,所以无需下载大型JavaScript捆绑包,从而大大加快了页面加载速度。

Blazor Web应用还支持交互式服务器呈现,这种方式通过与浏览器的实时连接在服务器上处理UI交互。这种呈现方式可以实现丰富的用户体验,就像客户端应用所提供的那样,不过无需创建API终结点就能访问服务器资源。

此外,Blazor Web应用也支持通过客户端呈现来处理交互。这种呈现方式依赖于使用可随附应用下载的WebAssembly构建的.NET运行时。在WebAssembly上运行Blazor时,.NET代码可以访问浏览器的完整功能,并可与JavaScript互操作。 .NET 代码在浏览器的安全性沙盒中运行,沙盒提供的保护可防御客户端计算机上的恶意操作。

对于独立Blazor WebAssembly应用,该应用可以完全在浏览器中直接运行,无需服务器参与。对于这种应用,资产可作为静态文件部署到可为客户端提供静态内容的Web服务器或服务中。下载后,可以将独立Blazor WebAssembly应用作为渐进式Web应用(PWA)进行缓存并脱机执行。

混合应用

Blazor Hybrid 允许在本地客户端应用中将 Razor 组件与适用于 Web、移动和桌面平台的本机及 Web 技术进行混合使用。其实现方式是,代码在 .NET 进程中以本地形式运行,并使用本地互操作通道将 Web UI 呈现在嵌入式 Web View 控件中。

混合应用采用 .NET Multi-platform App UI (.NET MAUI)来构建,这是一个跨平台框架,利用 C# 和 XAML 来创建本机移动应用和桌面应用。

标签:currentCount,Web,再学,builder,概述,应用,UI,Blazor
From: https://www.cnblogs.com/known/p/17761097.html

相关文章

  • Blazor Server App Cannot find the fallback endpoint specified by route values
    github官方issues中提到的解决方案,CreateBuilder时指定项目绝对路径可以解决。1//指定项目路径,也可以用Assembly.GetCallingAssembly获取2conststringContentRootPath=@"C:\Users\BlazorServer";//项目的路径3conststringApplicationName=nameof(BlazorServer);......
  • 搭建 Kubernetes 集群 —— API 概述
    官网文档:https://kubernetes.io/zh-cn/docs/reference/using-api/RESTAPI是Kubernetes系统的重要部分,组件之间的所有操作和通信均由APIServer处理的RESTAPI调用,大多数情况下,API定义和实现都符合标准的HTTPREST格式,可以通过kubectl命令管理工具或其他命令行工具来......
  • 操作系统的概述
    操作系统(OperatingSystem,简称OS)简单通俗来讲就是一款软件。不过和一般软件不同,操作系统是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件。任何其他软件都必须在操作系统的支持下才能运行。Linux也是众多操作系统之一,要想知道Linux是什......
  • 操作系统的概述
    操作系统(OperatingSystem,简称OS)简单通俗来讲就是一款软件。不过和一般软件不同,操作系统是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件。任何其他软件都必须在操作系统的支持下才能运行。Linux也是众多操作系统之一,要想知道Linux是什......
  • winform-Windows控件概述
    控件分类:文本类控件、选择类控件、分组控件、菜单控件、工具栏控件、状态栏控件控件命名规范:         控件的相关操作添加控件1、在窗口上绘制控件2、将控件拖拽到窗体上3、以编程的方式向窗体添加控件      ......
  • 第一章 计算机系统概述 1.2.4计算机系统的层次结构
    计算机是一个硬软件组成的综合体先谈硬件:第一层:微程序机器M0(微指令系统)由硬件直接执行微指令这是一个实在的硬件层第二层:传统机器M1(用机器语言的机器)用微指令解释机器指令这是一个实际的机器层再谈软件:第三层:虚拟机器M2(操作系统机器)用机器语言......
  • EFK日志收集系统概述
    一、概述1.ELK诞生的背景1.1没有ELK分析日志前没有日志分析工具之前,运维工作存在哪些痛点?痛点1、生产出现故障后,运维需要不停的查看各种不同的日志进行分析?是不是毫无头绪;痛点2、项目上线出现错误,如何快速定位问题?如果后端节点过多、日志分散怎么办;痛点3、开发人员需要实时查......
  • Sigrity概述
    Sigrity软件做信号完整性能,电源完整性,高速信号互联仿真分析上,工具更全面,组建更专业。更容易上手学习,快速掌握。  ......
  • Spring框架概述
    1.Spring框架是轻量级的JavaEE框架2.Spring可以解决企业应用开发的复杂性3.Spring有两个核心部分:IOC和Aop(1)IOC:控制反转,把创建对象的过程交给Spring进行管理(2)Aop:面向切面,不修改源代码进行功能增强4.Spring特点(1)方便解耦,简化开发(2)Aop变成支持(3)方便程序测试(4)方便和其他框架进行整合(5)方......
  • 1.SpringBoot——概述
    SpringBoot和SSM开发中有什么区别SpringBoot没有颠覆JavaEE开发,还是要学Spring,它是诸葛亮,提供多种用兵打仗的方案。SSM限定死了只能使用SSM开发JavaWeb应用。而SpringBoot没有与任何MVC框架绑定。一个很恰当的比喻是,SpringMVC、Websocket、Redis、MongoDB、kafka这些对应电......