当前位置: 首页 > news >正文

CSharp中Blazor初体验

Blazor 是一个由微软开发的开源 Web 框架,用于构建富客户端 Web 应用程序使用 C# 语言和 .NET 平台。Blazor 允许开发人员使用 C# 语言来编写前端 Web 应用程序,而不需要像传统的 JavaScript 框架(如 Angular、React 或 Vue.js)那样使用 JavaScript 或其他语言。

Blazor 提供两种模型来构建 Web 应用程序:

  1. Blazor Server: 在 Blazor Server 模式下,应用程序的 UI 逻辑在服务器上运行,而 UI 的渲染结果通过 SignalR 实时通信协议发送到客户端。用户与应用程序交互时,会触发与服务器之间的信号传输,从而更新 UI。这种模式适合需要在服务器上处理敏感逻辑或需要维护连接的应用程序。

  2. Blazor WebAssembly: 在 Blazor WebAssembly 模式下,应用程序完全在用户的 Web 浏览器中运行。C# 代码通过 WebAssembly 在浏览器中运行,使得应用程序可以独立于服务器运行。这种模式允许更高的性能和更快的加载速度,并允许构建完全脱机运行的 Web 应用程序。

Blazor 提供了一组丰富的组件和功能,包括数据绑定、组件化、路由、表单验证等。它与 .NET 生态系统紧密集成,开发人员可以利用 .NET Core/.NET 5+ 的所有功能和库来构建功能强大的 Web 应用程序。

Blazor 的特点包括:

  • C# 和 Razor 语法: 使用熟悉的 C# 编写客户端代码,以及 Razor 语法来构建动态 Web 页面。
  • 组件化开发: 使用组件化思想构建应用程序,使得代码重用性更高。
  • 现代化的 Web 开发体验: 提供了现代化的前端开发体验,同时利用了 .NET 生态系统的优势。
  • 跨平台兼容性: 支持跨各种现代 Web 浏览器的平台,不受特定操作系统的限制。

Blazor 已经吸引了许多开发人员的注意,并且在.NET开发者中获得了广泛的关注和使用。它为开发人员提供了一种新的方式来构建 Web 应用程序,使得使用 C# 可以轻松地编写客户端代码,同时充分利用了 .NET 平台的功能和性能优势。

1.Blazor的主要优势

使用 Blazor 的主要优势和原因有多个:

  1. 统一的编程语言: 对于已经熟悉和喜爱使用 C# 编程语言的开发人员来说,Blazor 提供了一个机会,使他们能够在 Web 开发中继续使用这种语言,而不必转向学习 JavaScript 或其他前端语言。这种统一的编程语言减少了学习曲线,并促进了开发速度和效率。

  2. 代码重用性: Blazor 支持组件化开发,使得开发人员能够构建可重用的组件。这些组件可以在应用程序的不同部分重复使用,从而提高了代码的可维护性和可扩展性。

  3. .NET 生态系统: Blazor 与 .NET 平台紧密集成,可以利用.NET Core/.NET 5+ 的各种功能、库和工具。开发人员可以轻松地访问和使用 .NET 生态系统中丰富的资源,如 Entity Framework、ASP.NET Core、Azure 服务等,从而加速开发过程。

  4. 减少前后端分离的复杂性: Blazor 可以在客户端使用 C# 与服务器进行通信,减少了传统前后端分离架构中的一些复杂性。Blazor Server 模式下的实时通信机制和 Blazor WebAssembly 模式下的单页应用模式,都可以减少开发人员在管理和维护应用程序状态时的工作量。

  5. 性能优势: Blazor WebAssembly 提供了较高的性能,并能够在用户的浏览器中独立运行,减少了对服务器的依赖,提供了更快的加载速度和响应能力。

  6. 跨平台兼容性: Blazor 支持跨多种现代 Web 浏览器和平台,这意味着可以针对不同的设备和用户进行开发,并确保应用程序在各种环境中的一致性和稳定性。

总的来说,Blazor 提供了一个用 C# 编写现代 Web 应用程序的新途径。它的优势在于减少了跨前后端的学习曲线、提高了代码的可维护性和可重用性,并允许开发人员利用.NET 平台的各种功能来构建高性能、现代化的 Web 应用程序。

2.创建一个新的项目

  1. 创建一个项目

在这里插入图片描述

  1. 选择Blazor项目
    在这里插入图片描述

  2. 输出Blazor基本信息

在这里插入图片描述

  1. 打开项目
    在这里插入图片描述

3.代码结构

在这里插入图片描述

已创建多个文件,以为你提供可运行的简单 Blazor 应用。

  • Program.cs 是启动服务器以及在其中配置应用服务和中间件的应用的入口点。
  • App.razor 为应用的根组件。
  • Routes.razor 配置 Blazor 路由器。
  • Components/Pages 目录包含应用的一些示例网页。
  • BlazorApp.csproj 定义应用项目及其依赖项,且可以通过双击解决方案资源管理器中的 BlazorApp 项目节点进行查看。
  • Properties 目录中的 launchSettings.json 文件为本地开发环境定义不同的配置文件设置。创建项目时会自动分配端口号并将其保存在此文件上。

在这里插入图片描述

左侧导航目录

在这里插入图片描述

导航切换页面信息

在这里插入图片描述

数据点击页面信息

在这里插入图片描述

绑定数据

在这里插入图片描述

4.使用EChart

  1. 引用EChart.JS
    在这里插入图片描述

  2. 安装Package

使用 NuGet: 如果您更喜欢使用 NuGet 进行安装,可以在 Blazor 项目中使用 Microsoft.JSInteropBlazored.Toast(可选)库来调用 JavaScript 方法。
在这里插入图片描述

  1. 创建页面和逻辑

在这里插入图片描述

  • NavMenu.razor
<div class="top-row pl-4 navbar navbar-dark"><a class="navbar-brand" href="">WebAppForm</a><button class="navbar-toggler" @οnclick="ToggleNavMenu"><span class="navbar-toggler-icon"></span></button>
</div><div class="@NavMenuCssClass" @οnclick="ToggleNavMenu"><ul class="nav flex-column"><li class="nav-item px-3"><NavLink class="nav-link" href="" Match="NavLinkMatch.All"><span class="oi oi-home" aria-hidden="true"></span> Home</NavLink></li><li class="nav-item px-3"><NavLink class="nav-link" href="counter"><span class="oi oi-plus" aria-hidden="true"></span> Counter</NavLink></li><li class="nav-item px-3"><NavLink class="nav-link" href="fetchdata"><span class="oi oi-list-rich" aria-hidden="true"></span> Fetch data</NavLink></li><li class="nav-item px-3"><NavLink class="nav-link" href="echarts"><span class="oi oi-list-rich" aria-hidden="true"></span> ECharts</NavLink></li></ul>
</div>@code {private bool collapseNavMenu = true;private string NavMenuCssClass => collapseNavMenu ? "collapse" : null;private void ToggleNavMenu(){collapseNavMenu = !collapseNavMenu;}
}
  • EChartsComponent.razor
@page "/echarts"<div id="echartsContainer" style="width: 600px; height: 400px;"></div>@code {[Inject]public IJSRuntime JSRuntime { get; set; }protected override async Task OnAfterRenderAsync(bool firstRender){if (firstRender){await JSRuntime.InvokeVoidAsync("initializeECharts");}}
}
  • echartsInterop.js
window.initializeECharts = () => {// 使用 ECharts 初始化代码,例如创建图表等const chartDom = document.getElementById('echartsContainer');const myChart = echarts.init(chartDom);// ECharts 配置选项const option = {// 此处添加您的 ECharts 配置// 示例:创建一个简单的柱状图xAxis: {type: 'category',data: ['A', 'B', 'C', 'D', 'E', 'F']},yAxis: {type: 'value'},series: [{data: [10, 20, 15, 25, 18, 30],type: 'bar'}]};// 使用指定的配置项和数据显示图表myChart.setOption(option);
};

最终效果

在这里插入图片描述

相关文章:

CSharp中Blazor初体验

Blazor 是一个由微软开发的开源 Web 框架&#xff0c;用于构建富客户端 Web 应用程序使用 C# 语言和 .NET 平台。Blazor 允许开发人员使用 C# 语言来编写前端 Web 应用程序&#xff0c;而不需要像传统的 JavaScript 框架&#xff08;如 Angular、React 或 Vue.js&#xff09;那…...

Linux下新建用户,并进行授权

注意&#xff1a;以下操作需要在root用户下&#xff01; 新增用户 adduser 用户名设置密码 passwd 用户名更改目录所有者命令 chown -R 用户名:用户名 目录更改目录权限命令 chmod -R 755 目录...

STM32为基础的模拟I2C通用8bit和16bit读取以及多字节读取

GPIO模拟I2C驱动的通用代码&#xff0c;I2C的寄存器地址有8位和16位的&#xff0c;主要解决了同一个MCU同时处理8位和16位寄存器地址芯片时候的驱动问题。 typedef enum {IIC_8BIT_BASE_ADDR,IIC_16BIT_BASE_ADDR }iic_bits_e; typedef struct {uint8_t DevAddr;uint16_t RegA…...

算法训练营Day19

#Java #二叉树 #双指针 开源学习资料 Feeling and experiences&#xff1a; 二叉搜索树的最小绝对差&#xff1a;力扣题目链接 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的…...

C++数据结构——二叉搜索树详解

目录 一&#xff0c;关于二叉搜索树 1.1 概念 1.2 基本结构 二&#xff0c;二叉搜索树接口实现 2.1 插入 2.2 查找 2.3 打印 2.4* 删除 三&#xff0c;二叉搜索树接口递归实现 3.1 查找 3.2 插入 3.3 删除 四&#xff0c;二叉搜索树的默认成员函数 五&#xff0c;…...

ros2机器人在gazebo中移动方案

原文连接Gazebo - Docs: Moving the robot (gazebosim.org) 很重要的地方&#xff1a;使用虚拟机运行Ubuntu的时候&#xff0c;需要关闭”加速3D图形“的那个选项&#xff0c;否则gazebo无法正常显示。 Moving the robot&#xff08;使用命令移动机器人示例&#xff09; In t…...

学习Java第74天,Ajax简介

什么是ajax AJAX Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09;。 AJAX 不是新的编程语言&#xff0c;而是一种使用现有标准的新方法。 AJAX 最大的优点是在不重新加载整个页面的情况下&#xff0c;可以与服务器交换数据并更新部分网页…...

【Java面试题】在Java中String,Stringbuffer,StringBuilder的区别?

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍在Java中String&#xff0c;Stringbuffer&#xff0c;StringBuilder的区别以及部分理论知识 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主收将持续更新学习记录…...

让AIGC成为你的智能外脑,助力你的工作和生活

人工智能成为智能外脑 在当前的科技浪潮中&#xff0c;人工智能技术正在以前所未有的速度改变着我们的生活和工作方式。其中&#xff0c;AIGC技术以其强大的潜力和广泛的应用前景&#xff0c;正在引领着这场革命。 AIGC技术是一种基于人工智能的生成式技术&#xff0c;它可以通…...

ubuntu12.04 源

替换 /etc/apt/sources.list deb http://old-releases.ubuntu.com/ubuntu precise main restricted universe multiverse deb http://old-releases.ubuntu.com/ubuntu precise-security main restricted universe multiverse deb http://old-releases.ubuntu.com/ubu…...

openssl数据压缩

介绍 数据压缩是将原有数据通过某种压缩算法计算得到相对数据量小的过程。这种过程是可逆的&#xff0c;即能通过压缩后的数据恢复出原数据。数据压缩能够节省存储空间&#xff0c;减轻网络负载。 在即需要加密又需要压缩的情况下&#xff0c;必须先压缩再加密&#xff0c;次…...

SQLturning:定位连续值范围起点和终点

在上一篇blog说到&#xff0c;如何去优化查询连续值范围&#xff0c;没看过的朋友&#xff0c;上篇blog链接[在此]。(https://blog.csdn.net/weixin_42575078/article/details/135067645?spm1001.2014.3001.5501) 那么今天来说说怎么将连续的数据合并&#xff0c;然后返回合并…...

饥荒Mod 开发(十七):手动保存和加载,无限重生

饥荒Mod 开发(十六)&#xff1a;五格装备栏 饥荒Mod 开发(十八)&#xff1a;Mod 添加配置选项 饥荒游戏会自动保存&#xff0c;本来是一个好的机制&#xff0c;但是当角色死亡的时候存档会被删除&#xff0c;又要从头开始&#xff0c;有可能一不小心玩了很久的档就直接给整没了…...

Skywalking系列之最新版9.2.0-JavaAgent本地构建

MAC 10.15.7IDEA 2021.2skywalking-agent 9.2.0-SNAPSHOTJDK 17/21 (最新的代码要看最新的要求&#xff0c;注意不能使用JDK8&#xff0c;会构建失败)Maven 3.6.0 关于本地构建JavaAgent源码 1、获取源码&#xff0c;加载submodule 分步执行&#xff1a; git clone https:/…...

olap/clickhouse-编译器优化与向量化

本文主要结合15721和clickhouse源码来聊聊向量化&#xff0c;正好我最近也在用Eigen做算子加速&#xff0c;了解下还是有好处的。 提示编译器 提示编译器而不是复杂化简单的代码 什么时候使用汇编&#xff0c;什么时候使用SIMD&#xff1f;下面有几个基本原则&#xff1a; …...

RK3399平台开发系列讲解(内核入门篇)网络协议的分层

🚀返回专栏总目录 文章目录 一、应用层二、传输层三、网络层四、数据链路层(Data Link Layer)五、物理层沉淀、分享、成长,让自己和他人都能有所收获!😄 📢对于多数的应用和用户而言,使用互联网的一个基本要求就是数据可以无损地到达。用户通过应用进行网络通信࿰...

Idea远程debugger调试

当我们服务部署在服务器上&#xff0c;我们想要像在本地一样debug,就可以使用idea自带的Remote JVM Debug 创建Remote JVM Debug服务器启动jar打断点进入断点 当我们服务部署在服务器上&#xff0c;我们想要像在本地一样debug,就可以使用idea自带的 Remote JVM Debug) 创建Rem…...

MATLAB - Gazebo 仿真环境

系列文章目录 前言 机器人系统工具箱&#xff08;Robotics System Toolbox™&#xff09;为使用 Gazebo 模拟器可视化的模拟环境提供了一个界面。通过 Gazebo&#xff0c;您可以在真实模拟的物理场景中使用机器人进行测试和实验&#xff0c;并获得高质量的图形。 Gazebo 可在…...

selenium自动化webdriver下载及安装

1、确认浏览器的版本 在浏览器的地址栏&#xff0c;输入chrome://version/&#xff0c;回车后即可查看到对应版本 2、找到对应的chromedriver版本 2.1 114及之前的版本可以通过点击下载chromedriver,根据版本号&#xff08;只看大版本&#xff09;下载对应文件 2.2 116版本通过…...

网络基础介绍

1.网线制作 1.1 网线制作需要的工具 网线 网线钳 水晶头 测试仪 ​编辑 1.2 网线的标准 1.3 网线的做法 2.集线器&交换机&路由器的介绍 3.OSI七层模型 4.路由器的设置 4.1 常见的路由器设置地址 4.2 常见的路由器账号密码 4.3 登录路由器 设置访客网…...

从YOLOv1到YOLOv5:一个算法工程师的实战避坑与版本选择指南

从YOLOv1到YOLOv5&#xff1a;算法工程师的版本选择与实战调优指南 在计算机视觉领域&#xff0c;目标检测算法的发展日新月异&#xff0c;而YOLO(You Only Look Once)系列作为其中的佼佼者&#xff0c;凭借其出色的实时性和准确性&#xff0c;已成为工业界和学术界广泛采用的核…...

Mega:基于上下文工程的Brainbase平台AI开发效率革命

1. 项目概述&#xff1a;Mega&#xff0c;你的Brainbase平台AI工程专家如果你正在使用Claude Code、Cursor或者任何能读取文件的AI编程工具来构建基于Brainbase平台的对话式AI应用&#xff0c;那么你很可能遇到过这样的困境&#xff1a;你需要花费大量时间向AI解释Brainbase的架…...

NomNom终极指南:3个技巧让你轻松掌控《无人深空》存档

NomNom终极指南&#xff1a;3个技巧让你轻松掌控《无人深空》存档 【免费下载链接】NomNom NomNom is the most complete savegame editor for NMS but also shows additional information around the data youre about to change. You can also easily look up each item indi…...

多渠道订单数据处理自动化,落地步骤与ERP打通方案 | 2026企业级智能体实战手册

在2026年的数字化转型深水区&#xff0c;企业面临的不再是“是否要自动化”的问题&#xff0c; 而是如何在高并发、多维度的全渠道业务压力下&#xff0c; 实现订单流、资金流与信息流的绝对同步。 传统的OMS&#xff08;订单管理系统&#xff09;与ERP&#xff08;企业资源计划…...

ాలుWindows上的安卓应用安装器APK Installer:打破平台壁垒的轻量级解决方案

#ాలుWindows上的安卓应用安装器APK Installer&#xff1a;打破平台壁垒的轻量级解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在数字生态日益多元化的今天…...

PixelAnnotationTool终极指南:如何用智能分水岭算法实现高效像素级图像标注

PixelAnnotationTool终极指南&#xff1a;如何用智能分水岭算法实现高效像素级图像标注 【免费下载链接】PixelAnnotationTool Annotate quickly images. 项目地址: https://gitcode.com/gh_mirrors/pi/PixelAnnotationTool 你是否曾经为图像标注工作感到头疼&#xff…...

LayerDivider:如何用3步将单张插画自动分层为可编辑PSD文件?

LayerDivider&#xff1a;如何用3步将单张插画自动分层为可编辑PSD文件&#xff1f; 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 你是否曾经面对一张精…...

APK安装器终极指南:在Windows上轻松安装安卓应用的5个简单步骤

APK安装器终极指南&#xff1a;在Windows上轻松安装安卓应用的5个简单步骤 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否想在Windows电脑上直接运行安卓应用&a…...

高性能PDF转SVG矢量转换架构解析:基于Poppler与Cairo的技术实现

高性能PDF转SVG矢量转换架构解析&#xff1a;基于Poppler与Cairo的技术实现 【免费下载链接】pdf2svg A simple PDF to SVG converter using the Poppler and Cairo libraries 项目地址: https://gitcode.com/gh_mirrors/pd/pdf2svg 在数字化文档处理领域&#xff0c;PD…...

别再死记硬背了!用这三个二极管等效模型,轻松搞定电路分析(附典型例题)

二极管电路分析的三大黄金法则&#xff1a;从理论到实战的思维跃迁 在电子工程领域&#xff0c;二极管就像电路世界里的"单向阀门"&#xff0c;看似简单却暗藏玄机。许多初学者面对复杂二极管电路时&#xff0c;往往陷入盲目试错的困境——要么死记硬背公式&#xff…...