MAUI使用Masa blazor组件库

上一篇(点击阅读)我们实现了UI在Web端(Blazor Server/Wasm)和客户端(Windows/macOS/Android/iOS)共享,这篇我加上 Masa Blazor[2]组件库的引用,并把前几个月写的时间戳转换[3]工具加上。

3fde0bf2d182fa3faa7c507c1dca680e.gif

1. 前置知识

关于Masa Blazor请点击Masa Blazor官网[4]了解:

MASA Blazor

基于Material Design和BlazorComponent的交互能力提供标准的基础组件库。提供如布局、弹框标准、Loading、全局异常处理等标准场景的预置组件。

2. 组件库的引用

组件库的添加参考Masa官网[5],这里写下Dotnet9后台[6]添加记录:

2.1 UI共享库的修改-Dotnet9.WebApp

  1. UI共享库 Dotnet9.WebApp 添加Maas.Blazor包,刚好今天(21号)Masa发布了0.5.0-preview.3版本,我们下载使用:

Install-Package Masa.Blazor -Version 0.5.0-preview.3
6057d17a50ea4a5732f0b5722dd89280.png
  1. 封装Maas.Blazor组件引用

添加文件./MasaExtensions/MasaSetup.cs,代码如下:

using Microsoft.Extensions.DependencyInjection;namespace Dotnet9.WebApp.MasaExtensions;public static class MasaSetup
{public static void AddMasaSetup(this IServiceCollection services){if (services == null) throw new ArgumentNullException(nameof(services));services.AddMasaBlazor();   // 这句关键代码}
}

关键代码只有一行services.AddMasaBlazor();,添加扩展类是为了功能扩展,为了其他项目方便使用...

  1. _Imports.razor 引入Masa.Blazor命名空间

@using Masa.Blazor

就这3步对 Dotnet9.WebApp的修改。

2.2 跨平台项目修改-Dotnet9.MAUI

  1. 修改MauiProgram.cs文件,添加上面封装的扩展方法AddMasaSetup():

using Dotnet9.WebApp.MasaExtensions;    // 第1处:添加这个命名空间namespace Dotnet9.MAUI;public static class MauiProgram
{public static MauiApp CreateMauiApp(){var builder = MauiApp.CreateBuilder();builder.UseMauiApp<App>().ConfigureFonts(fonts => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); });builder.Services.AddMauiBlazorWebView();
#if DEBUGbuilder.Services.AddBlazorWebViewDeveloperTools();
#endifbuilder.Services.AddMasaSetup();    // 第2外:添加扩展方法引入Masa Blazorreturn builder.Build();}
}
  1. 添加Masa.Blazor资源文件

修改wwwwroot/index.html文件,添加以下样式(直接复制 Masa.Blazor[7]Blazor WebAssembly使用的资源文件)

<link href="_content/Masa.Blazor/css/masa-blazor.css" rel="stylesheet" />
<link href="_content/Masa.Blazor/css/masa-extend-blazor.css" rel="stylesheet" /><link href="https://cdn.masastack.com/npm/@mdi/font@5.x/css/materialdesignicons.min.css" rel="stylesheet">
<link href="https://cdn.masastack.com/npm/materialicons/materialicons.css" rel="stylesheet">
<link href="https://cdn.masastack.com/npm/fontawesome/v5.0.13/css/all.css" rel="stylesheet"><script src="_content/BlazorComponent/js/blazor-component.js"></script>

2.3 Blazor WebAssembly项目修改-Dotnet9.Wasm

  1. 修改Program.cs文件,添加上面封装的扩展方法AddMasaSetup():

using Dotnet9.WebApp;
using Dotnet9.WebApp.MasaExtensions;        // 第1处:添加这个命名空间
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<Main>("#app");
builder.RootComponents.Add<HeadOutlet>("head::after");builder.Services.AddMasaSetup();            // 第2外:添加扩展方法引入Masa Blazor
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });await builder.Build().RunAsync();
  1. 添加Masa.Blazor资源文件

Dotnet9.MAUI

2.4 Blazor Server项目修改-Dotnet9.Server

  1. 修改Program.cs文件,添加上面封装的扩展方法AddMasaSetup():

using Dotnet9.WebApp.MasaExtensions;        // 第1处:添加这个命名空间var builder = WebApplication.CreateBuilder(args);// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddMasaSetup();            // 第2外:添加扩展方法引入Masa Blazorvar app = builder.Build();// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{app.UseExceptionHandler("/Error");// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.app.UseHsts();
}app.UseHttpsRedirection();app.UseStaticFiles();app.UseRouting();app.MapBlazorHub(); 
app.MapFallbackToPage("/_Host");app.Run();
  1. 添加Masa.Blazor资源文件

修改Pages/_Layout.cshtml文件,添加以下样式(复制 Masa.Blazor[8]Blazor Server使用的资源文件)

<!-- masa blazor css style -->
<link href="_content/Masa.Blazor/css/masa-blazor.css" rel="stylesheet" />
<link href="_content/Masa.Blazor/css/masa-extend-blazor.css" rel="stylesheet" /><!--icon file,import need to use-->
<link href="https://cdn.masastack.com/npm/@("@mdi")/font@5.x/css/materialdesignicons.min.css" rel="stylesheet">
<link href="https://cdn.masastack.com/npm/materialicons/materialicons.css" rel="stylesheet">
<link href="https://cdn.masastack.com/npm/fontawesome/v5.0.13/css/all.css" rel="stylesheet"><!--js(should lay the end of file)-->
<script src="_content/BlazorComponent/js/blazor-component.js"></script>

注意:MAUI Blazor和Blazor WebAssembly两个项目引入Masa Blazor资源文件的代码一样,Blazor Server和前两者主要区别是materialdesignicons.min.css文件:

0c3619b11fd0b52d0dc52f5afeb9b3e4.png

这里关于Masa.Blazor的引入就介绍完了,总结下关键三步:

  1. 添加Masa.Blazor Nuget包:Install-Package Masa.Blazor

  2. Masa.Blazor组件注册使用:services.AddMasaBlazor();

  3. 添加Masa.Blazor资源文件:Wasm是wwwwroot/index.html, blazor server是_Layout.cshtml,注意两者添加资源文件的区别。

3. 时间戳功能的添加

在做Blazor Server版本网站时,有过一次时间戳功能开发的介绍(点击阅读[9]),代码很简单,这里不再细说,不能再水了....

4. 总结

Masa.Blazor组件库已经添加,并恢复了时间戳功能,下一步,就是继续搭建网站后台了,使用Masa.Blazor搭建框架喽。

  • 本文Blazor Server站点预览:https://server.dotnet9.com/

  • 本文Blazor Wasm站点预览:https://wasm.dotnet9.com/

  • MAUI(Android\Windows\macOS\iOS)预览:https://github.com/dotnet9/Dotnet9/tree/develop/src/Dotnet9.MAUI(未做发布文件,需要您源码自行编译)

参考资料

[1]

点击阅读: https://dotnet9.com/2022/06/Share-razor-library-between-maui-and-blazor-server-or-client

[2]

Masa Blazor: https://masa-blazor-docs-dev.lonsid.cn/

[3]

时间戳转换: https://dotnet9.com/2022/02/Use-Blazor-to-be-a-simple-online-timestamp-conversion-tool

[4]

Masa Blazor官网: https://masa-blazor-docs-dev.lonsid.cn/

[5]

Masa官网: https://masa-blazor-docs-dev.lonsid.cn/

[6]

Dotnet9后台: https://github.com/dotnet9/Dotnet9

[7]

Masa.Blazor: https://masa-blazor-docs-dev.lonsid.cn/getting-started/installation

[8]

Masa.Blazor: https://masa-blazor-docs-dev.lonsid.cn/getting-started/installation

[9]

点击阅读: https://dotnet9.com/2022/02/Use-Blazor-to-be-a-simple-online-timestamp-conversion-tool

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用的NSLOG日志打印格式

2019独角兽企业重金招聘Python工程师标准>>> 常用的NSLOG日志打印格式 以下是常用的LOG打印&#xff0c;如果有特殊&#xff0c;请我 &#xff0c;这边会不定期更新。 % 对象 %d, %i 整数 %u 无符整形 %f 浮点/双字 %x, %X 二进制整数 %…

Android studio提示Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.

1、 问题 在Android studio里面运行java的lib库&#xff0c;但是错误提示如下 Build file F:\sourceZip\app\build.gradle line: 2An exception occurred applying plugin request [id: com.android.application] > Failed to apply plugin com.android.internal.applicat…

[转]浅析DDD(领域驱动设计)

最近在做一些微服务相关的设计&#xff0c;内容包括服务的划分&#xff0c;Restful API的设计等。其中比较棘手的就是Service的职责划分&#xff1a;如何抽象具有统一业务范畴的Model&#xff0c;使其模块化&#xff0c;又如何高度提炼并组合多模块&#xff0c;使得业务可独立服…

【PhotoScan精品教程】任务三:生成密集点云、生成网格、生成DEM、生成DOM

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) 【PhotoScan精品教程】任务一:新建工程、导入照片、设置坐标系、导入控制点(POS)、自由空三 【PhotoScan精品教程】任务二:刺像控点,平差,质量报告精度检查,像控点POS权重调配 【PhotoScan…

windows环境实现批量加密文件,并创建加密文件同名(不带后缀)的文件夹,然后把加密文件和图片和文本放入这个文件夹。

1、 需求 我想把资源文件先加密成压缩文件&#xff0c;然后同时创建每个加密压缩文件同名的文件夹&#xff0c;同时需要把这个加密文件拷贝到这个同名的文件夹&#xff0c;然后还需要把一个图片和一个文本文档同时放进这个文件夹&#xff0c;然后在不加密压缩这个文件夹&#…

.NET7之MiniAPI(特别篇) :Preview5优化了JWT验证(上)

在.NET7的Preview5中&#xff0c;优化了asp.net core中的JWT验证&#xff0c;不用像以前繁琐了&#xff0c;更重要的是带来了一组生成Token的工具&#xff0c;可以让开发人员或测试人员不需登录获取Token&#xff0c;而达到测试的目的。创建项目现在来看一下怎么使用&#xff0…

iOS - UTI

一、UTI概念 1、什么是UTI Uniform Type Identifier&#xff0c;是字符串&#xff0c;格式标识符。 根据UTI&#xff0c;可得到相应的其他类型的格式标识符。比如public.jpeg对应于&#xff1a; A four-character file type code (an OSType) of JPEGA filename extension of .…

【Inpho精品教程】任务一:Inpho预处理准备(Pix4d生成未畸变图像、Pix4d生成相机参数文件)

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) Inpho软对于初学者来说,可能不像pix4d、PhotoScan等那么得心应手,处理过程也稍微有些复杂。Inpho处理的是POS分离的照片,在新建工程之前,需要获取相机参数、未畸变图像等,而这些前期的工作一…

学习MongoDB(三) Add an Arbiter to Replica Set 集群中加入仲裁节点

Add an Arbiter to Replica Set 在集群中加入仲裁节点&#xff0c;当集群中主节点挂掉后负责选出新的主节点&#xff0c;仲裁节点也是一个mongo实力&#xff0c;但是它不存储数据。 1、仲裁节点消耗很小的资源&#xff0c;而且不需要专用的服务器。 2、不能把仲裁节点安装到集…

[转]new Thread的弊端及Java四种线程池的使用

介绍new Thread的弊端及Java四种线程池的使用&#xff0c;对Android同样适用。本文是基础篇&#xff0c;后面会分享下线程池一些高级功能。 1、new Thread的弊端 执行一个异步任务你还只是如下new Thread吗&#xff1f; new Thread(new Runnable() {Overridepublic void run() …

【Inpho精品教程】任务二:Inpho创建工程(创建项目、新建相机参数、导入照片、导入POS、生成航条、保存项目)

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) 在任务一中,我们做了Inpho创建工程前的数据预处理工作,获取了未畸变的图像、相机参数、Inpho支持的POS等数据,本文在此基础之上,创建Inpho工程,主要步骤有:创建项目、新建相机参数、导入照片…

return view详解

1、return View(); 返回值 类型&#xff1a;System.Web.Mvc.ViewResult将视图呈现给响应的 View() 结果。 注释 View() 类的此方法重载将返回一个具有空 ViewName 属性的 ViewResult 对象。 如果你正在编写控制器操作的单元测试&#xff0c;则需为那些不采用字符串视图名称的单…

C语言试题九十一之写一个程序,用公式π/4=1-1/3+1/5-1/7+...,求π的近似值,直到最后一项的绝对值小于10^-8为止。

1、题目 写一个程序,用公式π/4=1-1/3+1/5-1/7+...,求π的近似值,直到最后一项的绝对值小于10^-8为止。 2 、温馨提示 C语言试题汇总里可用于计算机二级C语言笔试、机试、研究生复试中C程序设计科目、帮助C语言学者打好程序基础、C语言基础,锻炼您的逻辑思维和解决问…

C# 切换中英文输入法

本文经原作者授权以原创方式二次分享&#xff0c;欢迎转载、分享。原文作者&#xff1a;唐宋元明清原文地址&#xff1a;https://www.cnblogs.com/kybs0/p/10298697.htmlC# 切换中英文输入法在界面输入时&#xff0c;有时需要限定输入法。在不自定义正则表达式或者其它输入处理…

[转].NET 开源项目 Polly 介绍

今天介绍一个 .NET 开源库&#xff1a;Polly&#xff0c;它是支持 .NET Core 的&#xff0c;目前在 GitHub 的 Star 数量已经接近 5 千&#xff0c;它是一个强大且实用的 .NET 库。 Polly 介绍 官方对 Polly 的介绍是这样的&#xff1a; Polly is a .NET resilience and tran…

「 刘一哥GIS」CSDN专业技术博文专栏目录索引

刘一哥GIS 个人简介&#xff1a;刘一哥&#xff0c;多年研究地图学、地理信息系统、遥感、摄影测量和GPS等应用&#xff0c;精通ArcGIS等软件的应用&#xff0c;精通多门编程语言&#xff0c;擅长GIS二次开发和数据库系统开发&#xff0c;具有丰富的行业经验&#xff0c;致力于…

memcached 和 redis 的区别与选择

没有必要过多的关注性能。由于Redis只使用单核&#xff0c;而Memcached可以使用多核&#xff0c;所以在比较上&#xff0c;平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中&#xff0c;Memcached性能要高于Redis&#xff0c;虽然Redis最近也在存储…

C语言试题九十之实现输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 输入一行字…

数据库备份需要注意的

2019独角兽企业重金招聘Python工程师标准>>> 1、PHPMYADMIN无法导出大数据表的 如果你的数据库中有上百个数据表&#xff0c;并且有很多数据表记录都超过了1G&#xff0c;还有很多INNODB数据表&#xff0c;这个时候用PHPMYADMIN导出&#xff0c;你就会发现恢复后可能…

在 .NET 6 中使用 dotnet format 格式化代码

我不得不承认&#xff0c;在 code review 的时候&#xff0c;我花费了很多时间来研究 C# 的代码格式问题&#xff0c;这是没有太大意义的工作&#xff0c;我应该专注于其他事情&#xff0c;而不是观察同事是否忘记格式化代码&#xff0c;或者是使用了其他不同规则的代码编辑器。…