.NET Core 又一杀器! Web Blazor框架横空出世!
多年来,Javascript(及其子框架)已在浏览器中运行DOM(文档对象模型),并且掌握了脚本知识才能真正操作客户端UI。大约2年前,所有这些都随着Web Assembly的引入而发生了变化-Web Assembly允许在客户端解释已编译的语言(相对Web Assembly更多了解请阅读了解wasm的前世今身),并且现在所有浏览器都完全支持它。微软对此的回答是Blazor的创立。允许C#开发人员在.NET(包括UI)中构建其整个堆栈是一个令人兴奋的主张。一段时间以来,Blazor一直处于预览状态,但现在已包含在2019年9月23日的一般发行版以及.NET Core 3.0版的下一版中,当然想要品味Blazor的味道,再怎么说也要用.VisualStudio 2019 且安装.NET Core 3.0 + SDK。微软已经就如何执行此操作编写了一套给力的说明,并且该文档已在Microsoft Docs中呈现。您可以选择退出我的博客选择微软官方,但与其对比,我的还算....其GitHub地址为: https://github.com/AdrienTorris/awesome-blazor
创建Blazor项目可以通过dotnetCli命令来创建项目, dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.1.0-preview1.19508.20 ,我们文章中就直接通过Visual Studio来创建,如下图所示我们选择。
创建项目成功,我们来分析一下Blazor中的项目初始文件都是些什么?都有啥用?
- 依赖项,属性和wwwroot文件夹与标准ASP.NET Core应用程序中的文件夹相同。
- 该网页文件夹包含包括这个应用程序,就像网页MVC应用程序一样。
- 该共享文件夹包含适用于整个应用程序的布局页。
- 该_ViewImports.cshtml文件用于导入命名空间为其它* .cshtml文件。
- 在Program.cs的文件用于创建ASP.NET核心托管环境。
- 该Startup.cs文件 不多解释。
- 在_Imports.razor中我们直接全局引入库
如果运行示例应用程序,则会得到一个如下所示的页面:
随后你会在畅游在官方示例中,无尽遐想,这么给力的框架!我改如何去驾驭它,使用它?好的,我们现在就开始!激动的时刻!
现在我们需要一个razor组件,注意现在是叫做组件,不是通常使用的*.cshtml了,将我已编写好的代码来继续我的演讲,复制下面的代码。
<h3>Todo</h3> @page "/todo" @inject TodoItemService todoitemservice <table class="table"> <thead> <tr> <th>Date</th> <th>Description</th> </tr> </thead> <tbody> @foreach (var todoitem in todos) { <tr> <td>@todoitem.IsDone</td> <td>@todoitem.Title</td> </tr> } </tbody></table><input placeholder="Something todo" @bind="newTodo" /><button @onclick="AddTodo">Add todo</button> @code { private IList<TodoItem> todos = new List<TodoItem>(); private string newTodo; private void AddTodo() { if (!string.IsNullOrWhiteSpace(newTodo)) { todos.Add(new TodoItem { Title = newTodo,id=Guid.NewGuid().ToString() }); newTodo = string.Empty; } } } @functions{ protected override async Task OnInitializedAsync() { todos = await todoitemservice.Get