IDE:Microsoft Visual Studio Community 2022 (64 位) - Current
框架: blazor web app
操作步骤:
1.我先创建 blazor web app
项目名称: BlazorApp1
框架 : .net 9.0
身份验证: 无
勾选 "配置 HTTPS”
交互性类型 : 服务器
交互性位置: 全局
不勾 "包含示例页"
不勾 "不使用顶级语句"
不勾 "在 .NET Aspire 业务流程中登记"
- 然后我创建 Razor 类库
项目名称: RazorClassLibrary1
框架: .net 9.0
不勾 "支持页面和视图"
不勾 "在 .NET Aspire 业务流程中登记"
- 创建好以上2个工程后,主程序 BlazorApp1 项目引用 "RazorClassLibrary1"
- 删除 BlazorApp1 主程序里的 "Components" 文件夹, 只保留 appsettiongs.json 和 Program.cs 文件
- 然后在 RazorClassLibrary1 工程中 新建 Layout 文件夹, 并且在该文件夹里创建 MainLayout.razor 文件,内容如下:
@inherits LayoutComponentBase
@Body
6.然后在 RazorClassLibrary1 工程中 新建 Tip 文件夹, 并且在该文件夹里创建 Component2.razor 文件和 Component2.razor.css 文件
Component2.razor 内容如下:
@page "/test"
<h3>Component2</h3>
Component2.razor.css 文件内容如下:
body {
}
h3{
color:red;
}
- 修改 RazorClassLibrary1 项目里的 _Imports.razor 文件内容为以下内容:
_Imports.razor :
@using System.Net.Http
@using System.Net.Http.Json
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using static Microsoft.AspNetCore.Components.Web.RenderMode
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.JSInterop
- 新增 App.razor 文件, 内容如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<base href="/" />
<link rel="stylesheet" href="@Assets["app.css"]" />
<link rel="stylesheet" href="@Assets["BlazorApp1.styles.css"]" />
<ImportMap />
<HeadOutlet @rendermode="InteractiveServer" />
</head>
<body>
<Routes @rendermode="InteractiveServer" />
<script src="_framework/blazor.web.js"></script>
</body>
</html>
此时我就发现, <ImportMap> 提示绿色下划线警告了.
- 新增 Routes.razor 文件, 内容如下:
<Router AppAssembly="typeof(App).Assembly">
<Found Context="routeData">
<RouteView RouteData="routeData" DefaultLayout="typeof(Layout.MainLayout)" />
<FocusOnNavigate RouteData="routeData" Selector="h1" />
</Found>
</Router>
- BlazorApp1 主程序的 Program.cs 文件内容如下:
using RazorClassLibrary1;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error", createScopeForErrors: true);
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseAntiforgery();
app.MapStaticAssets();
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode();
app.Run();
- 至此 debug 启动程序,浏览 mycomponent 页面 , css 捆绑 正常, 浏览 Tip 文件夹下的 test 页面,css 捆绑也正常,
请教:
1)在 App.razor 里的 <ImportMap /> 警告如何解决?可否将这条语句注释掉呢?之前我遇到的 css 隔离失败 是否是因为我将 该语句 注释掉 造成的呢?
2)我将 <ImportMap /> 这条语句注释掉,再次重新编译生成,就会出现 Tip文件夹下的 test页面 css 捆绑失败 ,故此请教下,我这样封装 根组件 对吗?有没遗漏配置?谢谢了