寫在前面
需要升級VS2019以及.NET Core到最新版(具體的最低支持,我已經忘了,總是越新支持的就越好),以更好的支持自己開發Blazor項目。
WebAssembly
搜索Blazor模板

選擇Blazor WebAssembly App模板
項目實例

- 項目實例
- BlazorApp.Shared:提供最一般的支持,包括各個Model
- BlazorApp.Client:依賴BlazorApp.Shared,該項目側重於Pages功能
- BlazorApp.Server:依賴BlazorApp.Shared、BlazorApp.Client,該項目側重於提供接口功能
BlazorApp.Client
從上圖可知 該項目主要包括wwwroot、Pages、Shared三個文件夾,以及_Imports.razor、App.razor、Program.cs這三個單獨的文件。
wwwroot
這個文件夾和我們ASP.NET Core MVC里的wwwroot基本一致,不過需要注意的是,這個文件夾里面有一個比較重要的文件index.html,它是我們Blazor項目的起點。這個文件里也引用了blazor.webassembly.js,可是我們在項目中沒有看到。這沒關系,因為它會由Microsoft.AspNetCore.Components.WebAssembly.Build提供,在運行編譯的時候會自己出現的。
Shared
這個文件夾里,有三個文件,分別是MainLayout.razor、NavMenu.razor、SurveyPrompt.razor。
- MainLayout是Layout文件,它定義了該項目的基本布局
- NavMenu是Component,它實現了菜單功能,並對外提供了獨立而又單一的組件功能
- SurveyPrompt也是Component,它實現了文件傳入與連接跳轉功能,對外也是提供了獨立而又單一的菜單功能,同時這也是一個帶參的組件 組件功能后續會詳細介紹,但是需要提前說明的是,任何組件一經對外使用,都是獨立而又單一的。 接下來看一下運行后的效果圖:
整體的風格、左側的菜單、右側的鏈接都像我們展示了布局和組件功能
Pages
里面定義了三個.razor文件,這也是模板提供給我的Blazor編寫案例
- Index.razor向我們展示了,組件的調用
- FetchData.razor向我們展示了Call遠程API和路由功能(@page "/fetchdata")
- Counter.razor向我們展示了事件調用
運行項目
設置BlazorApp.Server為啟動項目
1. 下載必須文件
如圖所示,我們需要加載6.15M的文件,同時可以看到Blazor的運行時信息mono_wasm_runtime_ready。
2. 接下來,我們展開Object來看看其詳細信息,會看到Object中有太多的依賴程序集。
3. 打開源代碼tab頁,會看到以下幾個文件
- dotnet.wasm文件,打開后,會看到我們前文說過的WebAssembly文本格式的內容。
- blazor.webassembly.js,用於下載.NET運行時,依賴程序集等,同時還會初始化運行應用的程序集
- dotnet.3.2.0.js也是我們之前所說的用於調用C#方法的JS文件