开源项目 blazor-wasm-boilerplate
使用教程
1. 项目的目录结构及介绍
blazor-wasm-boilerplate/
├── src/
│ ├── Client/
│ │ ├── App.razor
│ │ ├── Program.cs
│ │ ├── _Imports.razor
│ │ ├── wwwroot/
│ │ │ ├── css/
│ │ │ ├── js/
│ │ │ ├── index.html
│ │ ├── Pages/
│ │ ├── Shared/
│ ├── Server/
│ │ ├── Controllers/
│ │ ├── Program.cs
│ │ ├── Startup.cs
│ ├── Shared/
├── tests/
│ ├── Client.IntegrationTests/
│ ├── Server.IntegrationTests/
│ ├── Shared.UnitTests/
├── .gitignore
├── README.md
├── LICENSE
目录结构说明
-
src/Client/
: Blazor WebAssembly 客户端项目的主要代码文件夹。App.razor
: 应用程序的根组件。Program.cs
: 客户端项目的入口点。_Imports.razor
: 全局导入文件,包含常用的命名空间。wwwroot/
: 静态文件目录,包含CSS、JS和HTML文件。index.html
: 应用程序的主HTML文件。
Pages/
: 包含应用程序的各个页面组件。Shared/
: 包含共享组件和布局。
-
src/Server/
: Blazor WebAssembly 服务端项目的主要代码文件夹。Controllers/
: 包含API控制器。Program.cs
: 服务端项目的入口点。Startup.cs
: 配置服务和应用程序的中间件。
-
src/Shared/
: 包含客户端和服务端共享的代码。 -
tests/
: 包含项目的测试代码。Client.IntegrationTests/
: 客户端集成测试。Server.IntegrationTests/
: 服务端集成测试。Shared.UnitTests/
: 共享代码的单元测试。
-
.gitignore
: Git忽略文件配置。 -
README.md
: 项目说明文档。 -
LICENSE
: 项目许可证。
2. 项目的启动文件介绍
客户端启动文件
src/Client/Program.cs
public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
await builder.Build().RunAsync();
}
}
服务端启动文件
src/Server/Program.cs
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
src/Server/Startup.cs
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddRazorPages();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseWebAssemblyDebugging();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseBlazorFrameworkFiles();
app.UseStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllers();
endpoints.MapFallbackToFile("index.html
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考