用途:为 Blazor 应用做架构决策,覆盖托管模型与渲染模式选择、项目搭建、路由、增强导航、流式渲染、预渲染及 AOT 安全模式。
主要能力:梳理五种托管模型——InteractiveServer、InteractiveWebAssembly、InteractiveAuto、Static SSR、Hybrid——并给出各模式的对比取舍(首屏加载、服务器资源、离线支持、.NET API 访问、可扩展性、SEO)。说明渲染模式可全局、按页面或按组件设置:全局在 App.razor 用 <Routes @rendermode="InteractiveServer" />,按页面用 @rendermode InteractiveServer,按组件用 @rendermode。涵盖路由约束(如 /products/{Id:int}、{Date:datetime})、查询字符串参数(SupplyParameterFromQuery)与 NavigationManager 编程式导航及 forceLoad。说明增强导航对链接与表单提交的拦截与 DOM 局部更新,以及用 data-enhance-nav="false"、data-enhance="false" 退出。介绍流式渲染([StreamRendering])与预渲染,并用 PersistentComponentState 跨预渲染保持状态。还给出 AOT/裁剪安全实践:源生成 JSON 序列化(JsonSerializerContext)、显式 JS 互操作、TrimmerRootAssembly 与 DynamicallyAccessedMembers。
必要用法示例(保持原样): dotnet new blazor -n MyApp dotnet new blazor -n MyApp --interactivity Auto dotnet new blazor -n MyApp --interactivity WebAssembly dotnet new blazor -n MyApp --interactivity Server dotnet new blazor -n MyApp --interactivity None
.NET 10 稳定特性:InteractiveAuto 的 Server 阶段 WebAssembly 预加载(自动,无需改代码)、增强表单验证(Static SSR 支持 IValidatableObject)、开发期 MapBlazorDiagnostics 诊断中间件。
限制与注意事项:组件架构、认证、bUnit 测试、独立 SignalR、E2E 测试、UI 框架选择等属其他技能范围;不应给所有页面默认 InteractiveServer;面向 WASM 的组件须放 .Client 项目;预渲染须用 PersistentComponentState;WASM 中避免反射序列化。具体版本兼容细节、完整代码与后续章节原始资料未提供完整。