<返回更多

你想一套UI,全终端发布吗?也许MAUI能帮你

2022-09-14  今日头条  元宇宙meta
加入收藏

windows Android/ target=_blank class=infotextkey>安卓 苹果预览图

MAUI介绍

随着MAUI正式版的发布,一直想用MAUI来写点东西或者实现一个小的项目来学习这个微软发布的心再次躁动起来。前面预览版也有过搭建测试过,但都因为某些不知原因的BUG而,进行的坎坎坷坷。正式版的发布,期望能够使用起来能够。。。爽爽。。。

好了来看下MAUI的简介:

.NET 多平台应用程序 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用程序, 使用 .net MAUI,可以开发可在 Android、IOSmacOS 上运行的应用,Windows 以及从单个共享代码库运行的应用。

看到这里大家感觉有点意思了吧。是个框架,能多端部署应用。

Blazor Hybrid 支持内置于 .NET 多平台应用 UI (.NET MAUI) 框架。.NET MAUI 包含 BlazorWebView 控件,该控件运行将 Razor 组件呈现到嵌入式 Web View 中。通过结合使用 .NET MAUI 和 Blazor,可以跨移动设备、桌面设备和 Web 重复使用一组 Web UI 组件。

下面来看下我搭建的测试工程:

 

文件夹说明:

Data 文件夹:接口或者数据的访问层。

Pages 文件夹:存放前端页面razor。

Platforms文件夹:包含的平台层。这个我理解为可创建和运行的内置平台层库。(不知道理解的对吗?,有不同理解的朋友,可以放在评论区。)

Resources 资源文件夹,没啥可说的。

Shared 文件夹: UI共享层。写过apsx 的可能感觉他是母版页或者前端框架结构层。

wwwroot 文件夹:发布资源层。

_Imports.razor 全局控制导入层。

 

MAUI 数据访问层到UI层流程

我个人一直认为学习一项技术,最快的办法,就是先搞懂流程。大的框架掌握了,去接触细节。从细节上完善对流程的认识,才是学好和掌握一项技术的方式和方法。

  1. 流程那我们就看下它的流程咯。。

我们就看它的数据是如何展示出来的:

 

就看Fetch Data页面。

打开NavMenu.razor 文件查看他的Href 链接

 

进入pages 查看

 

可以看到原始页面是从这里联过来的。


再看下数据是如何过来的:

		<tbody>
			@foreach (var forecast in forecasts)
			{
				<tr>
					<td>@forecast.Date.ToShortDateString()</td>
					<td>@forecast.TemperatureC</td>
					<td>@forecast.TemperatureF</td>
					<td>@forecast.Summary</td>
				</tr>
			}
		</tbody>

是从forecasts 对象来的。

@code {
	private WeatherForecast[] forecasts;

	protected override async Task OnInitializedAsync()
	{
		forecasts = await ForecastService.GetForecastAsync(DateTime.Now);
	}
}

forecasts 是从

ForecastService.GetForecastAsync 获取来的.看下方法实现:

        private static readonly string[] Summaries = new[]
        {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

        public Task<WeatherForecast[]> GetForecastAsync(DateTime startDate)
        {
            return Task.FromResult(Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = startDate.AddDays(index),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            }).ToArray());
        }

ForecastService 里的GetForecastAsync 随机生成了测试数据返回来数组对象。

总结:

 

 

多终端发布

点击运行选择运行平台:

 

等待自动生成多终端的应用即可。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>