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;使得业务可独立服…

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 .…

[转].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;致力于…

数据库备份需要注意的

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

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

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

dotnet-exec 0.4.0 released

dotnet-exec 0.4.0 releasedIntrodotnet-exec 是一个 C# 程序的命令行小工具&#xff0c;可以用来运行一些简单的 C# 程序而无需创建项目文件&#xff0c;而且可以自定义项目的入口方法&#xff0c;支持但不限于 Main 方法Install/Updatedotnet-exec 是一个 dotnet tool&#x…

.NET in China - What's New in .NET

点击蓝字关注我们编辑&#xff1a;Alan Wang排版&#xff1a;Rani Sun活动介绍去年11月&#xff0c;.NET 6 的发布&#xff0c;为我们带来了 .NET 多平台应用 UI&#xff08;.NET MAUI&#xff09;。就在前不久&#xff0c;.NET MAUI 已正式发布。未来&#xff0c;作为 .NET 7 …

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

使用 Anet 有一段时间了&#xff0c;已经在我的个人网站&#xff08;如 bookist.cc&#xff09;投入使用&#xff0c;目前没有发现什么大问题&#xff0c;所以才敢写篇文章向大家介绍。 GitHub 地址&#xff1a; https://github.com/anet-team/anet Anet 是一个 .NET Core 通用…

强烈推荐国内几款优秀的开源电商系统

一、背景需求 我玩得好的朋友刚创业&#xff0c;搞电商最一块&#xff0c;想做个全套的电商框架系统&#xff0c;希望支持公众号、小程序、H5、pc后台管理等功能&#xff0c;创业初期资金非常紧张&#xff0c;请开发人员做成本太高&#xff0c;然后就咨询我&#xff0c;有没有最…

Maui的学习之路(二)--设置

Maui的学习之路&#xff08;二&#xff09; -- 设置上一篇我们做了Maui的基本介绍&#xff0c;理论上这一篇应该会创建第一个Maui的应用&#xff0c;以便对此进行详细的评估&#xff0c;并逐步深入。如果你需要进行Maui首个应用的创建&#xff0c;那么欢迎访问.NET MAUI 创建移…

今天,Java编程周末提高班(第一期)正式结束

Java编程周末提高班&#xff08;第一期&#xff09;&#xff0c;走过了近两个月历程&#xff0c;一共同拥有68人次学生周末到老师家进行Java学习与交流。近距离的和一群年轻的学习接触&#xff0c;收获非常多&#xff0c;特别是对以后教学的改进。在学习的闲暇。大家自己做饭&a…

基本反射了解

1 package cn.wh;2 /**3 * java.lang.Class4 * author 王恒5 * time 2016年11月2日 上午10:39:256 */7 public class RedlectTest {8 public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {9 …

[转]让.NET应用秒变微服务

随着近年来微服务的发展&#xff0c;许多团队开始将自己的单体应用改造为微服务。通常Java或Go的应用可以通过业界已有的微服务框架作为微服务开发和改造的底座&#xff0c;封装掉解决跨网络问题带来的复杂性。但以Chassis模式进行的微服务改造有两大问题&#xff1a;多语言框架…

WPF 使用 MAUI 的自绘制逻辑

这是一个当前还没开发完成的功能&#xff0c;准确来说连预览版也算不上的功能。我原本以为 MAUI 是无法在 WPF 上面跑的&#xff0c;然而在看完了 MAUI 整个大的设计&#xff0c;才了解到&#xff0c;原来 MAUI 是一个非常庞大的开发项目。在 MAUI 里面&#xff0c;虽然现在是正…

[转]redis 5.0.5 5分钟搭建redis集群

环境&#xff1a;centos 7 1&#xff1a;下载并安装redis ​​​​​​​$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz$ tar xzf redis-5.0.5.tar.gz$ cd redis-5.0.5$ make redis 5.0版本 集群搭建不需要我们安装ruby就可以搭建成功&#xff0c;并且redis…