MAUI使用Masa blazor组件库
toqiye 2024-12-08 18:52 7 浏览 0 评论
上一篇(点击阅读)我们实现了UI在Web端(Blazor Server/Wasm)和客户端(Windows/macOS/Android/iOS)共享,这篇我加上 Masa Blazor组件库的引用,并把前几个月写的时间戳转换工具加上。
1. 前置知识
关于Masa Blazor请点击Masa Blazor官网了解:
MASA Blazor
基于Material Design和BlazorComponent的交互能力提供标准的基础组件库。提供如布局、弹框标准、Loading、全局异常处理等标准场景的预置组件。
2. 组件库的引用
组件库的添加参考Masa官网,这里写下Dotnet9后台添加记录:
2.1 UI共享库的修改-Dotnet9.WebApp
- UI共享库 Dotnet9.WebApp 添加Maas.Blazor包,刚好今天(21号)Masa发布了0.5.0-preview.3版本,我们下载使用:
Install-Package Masa.Blazor -Version 0.5.0-preview.3
- 封装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();,添加扩展类是为了功能扩展,为了其他项目方便使用...
- _Imports.razor 引入Masa.Blazor命名空间
@using Masa.Blazor
就这3步对 Dotnet9.WebApp的修改。
2.2 跨平台项目修改-Dotnet9.MAUI
- 修改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 DEBUG
builder.Services.AddBlazorWebViewDeveloperTools();
#endif
builder.Services.AddMasaSetup(); // 第2外:添加扩展方法引入Masa Blazor
return builder.Build();
}
}
- 添加Masa.Blazor资源文件
修改wwwwroot/index.html文件,添加以下样式(直接复制 Masa.Blazor 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
- 修改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();
- 添加Masa.Blazor资源文件
同Dotnet9.MAUI
2.4 Blazor Server项目修改-Dotnet9.Server
- 修改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 Blazor
var 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();
- 添加Masa.Blazor资源文件
修改Pages/_Layout.cshtml文件,添加以下样式(复制 Masa.Blazor 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文件:
这里关于Masa.Blazor的引入就介绍完了,总结下关键三步:
- 添加Masa.Blazor Nuget包:Install-Package Masa.Blazor;
- Masa.Blazor组件注册使用:services.AddMasaBlazor();;
- 添加Masa.Blazor资源文件:Wasm是wwwwroot/index.html, blazor server是_Layout.cshtml,注意两者添加资源文件的区别。
3. 时间戳功能的添加
在做Blazor Server版本网站时,有过一次时间戳功能开发的介绍(点击阅读),代码很简单,这里不再细说,不能再水了....
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(未做发布文件,需要您源码自行编译)
相关推荐
- 国产web端开源ui组件-通用前端ui界面组件库
-
写个序吧:随着工作的不断深入,越来越发现很多好的前端开源项目都来自于国外,国产的开源项目很多时候面临叫好不叫座甚至有很多就消失不见了。开源和创新,不仅仅是需要我们的参与同样也需要我们不断地传播,因此才...
- 微信小程序商城项目,包括,分销,团购,秒杀,优惠券惠源码分享
-
源码获取,关注转发文章之后私信回复【源码】即可免费获取到!小程序商城,包括:分销(支持三级)、团购(拼多多模式)、秒杀、优惠券、等功能技术框架核心框架:SpringFramework4安全框架:A...
- VUE3前端开发入门系列教程
-
一直以来使用ThinkJS开发,使用Semantic-UI手写代码,又缺少一些table等插件,好累。平时使用NodeJS开发后端较多,一直有接触VUE想法,总是不得入门(可能是思维固化了),再次深入...
- 支持分销、团购、秒杀、优惠券、微信商城项目,源码免费分享
-
小程序商城,包括:分销(支持三级)、团购(拼多多模式)、秒杀、优惠券、等功能如果您需要用到这个微信小程序的源码,欢迎关注转发之后私信【源码】来免费获取到!面向对象Open-Shop是企业在创立初期很好...
- 在Gitee获8.5k Star,做微信小程序商城看这一个开源项目就够了
-
商城系统是小程序中比较热门的类型,许多开发者在寻找商城类小程序项目时,都会遇到一些声称「开源」但是并不是完全开源,有时候还会收费的项目。今天Gitee介绍的这款微信小程序商城项目就是一款从前端到后...
- 七款国内免费开源PHP CMS推荐,无限制,可商用
-
自织梦cms收费后,很多使用dedecms的站长都转移到了别的cms系统上,上一期也给大家分享了几款国外开源cms系统,今天来给大家分享几款国内的免费且可商用的phpcms系统:PbootCmsPb...
- VUE3前端开发入门系列教程二:使用iView框架辅助开发
-
1、安装iView新框架,支持VUE3npminstallview-ui-plus2、编辑src/main.js,添加以下内容,导入js和css到项目importViewUIPlusfrom...
- TS 真正比 JS 强大的那些特性
-
在前端开发领域,JavaScript(JS)一直是当之无愧的武林盟主,凭借灵活多变的特性和超广泛的兼容性打下大片江山。然而,随着前端应用日益复杂,TypeScript(TS)这位后起之秀崛起,以独特优...
- 自写一个函数将js对象转为Ts的Interface接口
-
如今的前端开发typescript已经成为一项必不可以少的技能了,但是频繁的定义Interface接口会给我带来许多工作量,我想了想如何来减少这些非必要且费时的工作量呢,于是决定写一个函数,将对象放进...
- 如何优雅地校验后端接口数据,不做前端背锅侠
-
背景最近新接手了一批项目,还没来得及接新需求,一大堆bug就接踵而至,仔细一看,应该返回数组的字段返回了null,或者没有返回,甚至返回了字符串"null"???这我能忍?我立刻截...
- 正点原子I.MX6U嵌入式Linux C应用编 第十八章 输入设备应用编程
-
输入设备应用编程本章学习...
- Python时间序列分析:使用TSFresh进行自动化特征提取
-
TSFresh(基于可扩展假设检验的时间序列特征提取)是一个专门用于时间序列数据特征自动提取的框架。该框架提取的特征可直接应用于分类、回归和异常检测等机器学习任务。TSFresh通过自动化特征工程流程...
- 人教版八下数学第十九章《一次函数》辅导(6)一次函数(1)
-
人教版八下数学第十九章《一次函数》辅导(6)一次函数(1)一、生活中的一次函数探究1(1)一个小球由静止开始沿一个斜坡向下滚动,其速度每秒增加2m/s,若小球的速度为vm/s,运动时间为ts,求v关于...
- 笔记|Simulink中S函数的设计
-
S函数的简介S函数是Simulink中提供给用户的一个自定义模块,由于在研究过程中经常需要复杂的算法设计,Simulink中提供的模块无法满足使用,就需要用编程的形式设计出S函数模块,然后嵌入到系统中...
- 初探HarmonyOS开发,ArkTS语言初看
-
最近在研究HarmonyOS(鸿蒙操作系统)开发,HarmonyOS(鸿蒙操作系统)想必大家都不陌生了,但是我也是在该系统发布许久后才首次尝试上手开发,因为有写java后台的经验,也算是能堪堪上手。据...
你 发表评论:
欢迎- 一周热门
-
-
如何评估预测值与真实值之间的匹配质量
-
很香的几款开源免费的流程设计器
-
如何解决npm安装依赖报错ERESOLVE unable to resolve dependency tree
-
启动Autodesk软件时弹出FLEXnet License Finder对话框,这么办!
-
超详细的cmder工具介绍及功能、快捷键说明
-
硬核!Rust异步编程方式重大升级:新版Tokio如何提升10倍性能详解
-
基于 Vue 网页版IM聊天组件Lemon-IMUI
-
Vue组件库设计 | Vue3组件在线交互解释器
-
vue3 学习笔记(九)——script setup 语法糖用了才知道有多爽
-
「推荐」vue-code-view:一个在线编辑、实时预览的代码交互组件
-
- 最近发表
- 标签列表
-
- systemproperties (65)
- npm版本管理 (61)
- localhost:15672 (59)
- materialtheme (86)
- node-ssh (68)
- 图床搭建 (62)
- vue3addeventlistener (60)
- mybatisselectone (78)
- css圆形进度条 (69)
- androidble蓝牙开发 (62)
- android-gif-drawable (60)
- appender-ref (64)
- springbootmockito (68)
- gsonfastjson (59)
- 依赖注入的方式 (62)
- cookie跨域共享 (63)
- easyexcel导出图片 (77)
- dp数组 (61)
- js获取兄弟节点 (68)
- sysctl-a (60)
- window.target (62)
- apimodel注解的作用 (60)
- window.onerror (66)
- java链表listnode (59)
- springmvc教程 (65)