为什么 blazor 在从 class 库加载页面时加载其他文件
Why is blazor loading additional files when loading a page from a class library
问题:
当我从 class 库(启用 PWA,ASP.NET 核心托管,为 HTTPS 配置)打开 blazor 页面时,它再次联系服务器。我的 desired/expected 行为是将此页面视为原始客户端库中包含的页面。
设置:
我有一个空的 Blazor 项目 (webassembly) 和一个额外的 Razor 组件 class 库。
我已将 class 库的目标框架更改为 netstandard2.1 并更改了包引用。现在看起来像这样:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<RazorLangVersion>3.0</RazorLangVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="3.1.5" />
<PackageReference Include="System.Net.Http.Json" Version="3.2.1" />
</ItemGroup>
</Project>
我在 App.Razor
中引用了 class 库,如下所示:
<Router AppAssembly="@typeof(Program).Assembly" AdditionalAssemblies="new[] { typeof(SomeMicroservice.Client.Component1).Assembly }">
... standard generated found/not found code ...
</Router>
什么有效:
页面按预期加载(显示静态内容)
什么不起作用:
当浏览器进入离线模式时,无法加载页面,因为它必须从服务器下载项目。其他页面(包含在基本客户端项目中)可以离线加载(PWA 不是这里的问题)。
每次访问页面都会出现加载页面(同样的问题,它必须下载东西)
问题:
是否可以(如果可以,如何?)将新 class 库中的页面视为原始 class 库中的页面?否 downloads/loads,所以这适用于 PWA?
当 URL 更改时,blazor 将重新下载所有文件(为您提供 'loading...' 页面)。我不确定它为什么这样做,但对于正常流程(在 app/html 中使用 links)这不是问题,因为它不会这样做。
向菜单页面添加 link 时,加载外部页面时无需任何额外下载。
当url更改时,对于原始客户端项目之外的页面或原始客户端项目之外的另一个页面,将显示'loading...'页面并重新生成文件下载。
tl;dr:我添加了一个 link 而不是改变 url 并且它有效
编辑: 修正拼写
问题:
当我从 class 库(启用 PWA,ASP.NET 核心托管,为 HTTPS 配置)打开 blazor 页面时,它再次联系服务器。我的 desired/expected 行为是将此页面视为原始客户端库中包含的页面。
设置:
我有一个空的 Blazor 项目 (webassembly) 和一个额外的 Razor 组件 class 库。
我已将 class 库的目标框架更改为 netstandard2.1 并更改了包引用。现在看起来像这样:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<RazorLangVersion>3.0</RazorLangVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="3.1.5" />
<PackageReference Include="System.Net.Http.Json" Version="3.2.1" />
</ItemGroup>
</Project>
我在 App.Razor
中引用了 class 库,如下所示:
<Router AppAssembly="@typeof(Program).Assembly" AdditionalAssemblies="new[] { typeof(SomeMicroservice.Client.Component1).Assembly }">
... standard generated found/not found code ...
</Router>
什么有效:
页面按预期加载(显示静态内容)
什么不起作用:
当浏览器进入离线模式时,无法加载页面,因为它必须从服务器下载项目。其他页面(包含在基本客户端项目中)可以离线加载(PWA 不是这里的问题)。
每次访问页面都会出现加载页面(同样的问题,它必须下载东西)
问题:
是否可以(如果可以,如何?)将新 class 库中的页面视为原始 class 库中的页面?否 downloads/loads,所以这适用于 PWA?
当 URL 更改时,blazor 将重新下载所有文件(为您提供 'loading...' 页面)。我不确定它为什么这样做,但对于正常流程(在 app/html 中使用 links)这不是问题,因为它不会这样做。
向菜单页面添加 link 时,加载外部页面时无需任何额外下载。
当url更改时,对于原始客户端项目之外的页面或原始客户端项目之外的另一个页面,将显示'loading...'页面并重新生成文件下载。
tl;dr:我添加了一个 link 而不是改变 url 并且它有效
编辑: 修正拼写