第二次寫專欄,開頭仍是不知道說什麼,因此……先來段廣告😁
《進擊吧!Blazor!》是本人與張善友老師合做的Blazor零基礎入門系列視頻,此係列能讓一個從未接觸過Blazor的程序員掌握開發Blazor應用的能力。
視頻地址:https://space.bilibili.com/483888821/channel/detail?cid=151273
本系列文章是基於《進擊吧!Blazor!》直播內容編寫,升級.Net5,改進問題,講解更全面。html
每個教程的第一個Demo都是Hello,巧了,Blazor的默認模板就是一個現成的Hello Blazor,咱們就從他的默認模板開始。前端
IDE:Visual Studio 16.8程序員
ASP.NET Core hosted
選項用於控制是否生成帶有託管Blazor程序的ASP.NET Core服務端程序,咱們勾上。BlazorToDo.Server
設爲啓動項,而後啓動,應該能看到Hello, world!
下圖是項目結構
web
Blazor項目,自己就是一個Asp.Net Core項目,若是隻作前端,就能夠直接拿這個項目進行發佈和部署。以後咱們的分享就圍繞着這個項目進行。小程序
程序入口,這裏與Web項目的差別就是Builder使用了WebAssemblyHostBuilder。c#
1 public static async Task Main(string[] args) 2 { 3 var builder = WebAssemblyHostBuilder.CreateDefault(args); 4 builder.RootComponents.Add<App>("#app"); 5 builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); 6 await builder.Build().RunAsync(); 7 }
全局導入配置,在這裏使用using
引入後,至關於在全部razor
文件中都進行了引入。後端
Blazor的根組件,經過Program.cs
中的builder.RootComponents.Add<App>
進行映射。app
靜態文件存放位置,用途和Aps.net core相同,裏面的index.html文件就是主頁框架
<!--index.html--> <body> <div id="app">Loading...</div> <div id="blazor-error-ui"> An unhandled error has occurred. <a href="" class="reload">Reload</a> <a class="dismiss">🗙</a> </div> <script src="_framework/blazor.webassembly.js"></script> </body>
Program.cs
文件中builder.RootComponents.Add<App>("#app");
中的選擇器#app
必須能在index.html
中找到正確的元素,否則程序沒法正常顯示。async
業務組件存放位置,Blazor都是由組件組成的,頁面就是含有路由配置的組件。組件文件擴展名razor
,天然使用的是Razor
語法,以Index.razor
文件爲例,代碼以下
@page "/" <h1>Hello, world!</h1> Welcome to your new app. <SurveyPrompt Title="How is Blazor working for you?" />
Razor
語法的使用方法在後續分享中重點介紹,此處就不展開了。
共享組件存放位置。
服務端程序,也是一個Asp.Net Core項目,能夠用他給前端提供WebAPI,而且承載了Client編譯的靜態文件,若是咱們先後端部署在一塊兒,那麼直接發佈他便可,這也是結構最簡單部署方式。
共享項目,這就是Blazor相對於其餘前端開發解決方案的最大的優點,Blazor的先後端使用了相同的語言、相同的框架和語言規範。所以咱們能夠把先後端共享的代碼放入此項目,好比Dto,經常使用組件庫,相同的業務等
點擊按鈕後數字跳動,效果以下
下面是Counter.razor
的代碼
@page "/counter" <h1>Counter</h1> <p>Current count: @currentCount</p> <button class="btn btn-primary" @onclick="IncrementCount">Click me</button> @code { private int currentCount = 0; private void IncrementCount() { currentCount++; } }
代碼很簡潔,意思以下
currentCount
,要在頁面上顯示可使用@currentCount
,這裏使用@符號從HTML轉換爲c#。button
中咱們使用@onclick
捕獲事件,讓他觸發IncrementCount
函數,這個函數中累加currentCount
變量。關於razor語法未來後續分享中重點介紹
我將經過一個ToDo示例介紹路由的工做原理,Blazor組件的頁面製做方法。