Skip to content

Commit 62334a0

Browse files
Prerendering (#31)
1 parent 1de0a71 commit 62334a0

File tree

4 files changed

+30
-18
lines changed

4 files changed

+30
-18
lines changed

.github/workflows/gh-pages.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ jobs:
1313
uses: actions/setup-dotnet@v1
1414
with:
1515
dotnet-version: 9.0.x
16+
- name: .NET WASM Workload
17+
run: dotnet workload install wasm-tools
1618
- name: Publish with dotnet
17-
run: dotnet publish ./src --configuration Release --output build
19+
run: dotnet publish ./src/GIB --configuration Release --output build
1820
- name: Deploy to Github Pages
1921
uses: JamesIves/github-pages-deploy-action@releases/v3
2022
with:

src/GIB/GIB.csproj

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,18 @@
44
<TargetFramework>net9.0</TargetFramework>
55
<Nullable>enable</Nullable>
66
<ImplicitUsings>enable</ImplicitUsings>
7+
<BlazorWasmPrerenderingDeleteLoadingContents>true</BlazorWasmPrerenderingDeleteLoadingContents>
8+
<BlazorWasmPrerenderingMode>WebAssemblyPrerendered</BlazorWasmPrerenderingMode>
9+
<GHPages>true</GHPages>
710
</PropertyGroup>
811

912
<ItemGroup>
1013
<PackageReference Include="Blazored.LocalStorage" Version="4.5.0" />
11-
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.8" />
14+
<PackageReference Include="BlazorWasmPreRendering.Build" Version="6.0.0" />
15+
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="9.0.8" />
1216
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="9.0.8" PrivateAssets="all" />
1317
<PackageReference Include="MudBlazor" Version="7.9.0" />
18+
<PackageReference Include="PublishSPAforGitHubPages.Build" Version="3.0.1" />
1419
</ItemGroup>
1520

1621
</Project>

src/GIB/Program.cs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,30 @@
11
using Blazored.LocalStorage;
2+
using GIB;
23
using Microsoft.AspNetCore.Components.Web;
34
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
45
using MudBlazor.Services;
56

67
var builder = WebAssemblyHostBuilder.CreateDefault(args);
7-
builder.RootComponents.Add<GIB.App>("#app");
8-
builder.RootComponents.Add<HeadOutlet>("head::after");
98

10-
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
9+
// Determine whether root components are already registered via prerednered HTML contents.
10+
// See https://github.com/jsakamoto/BlazorWasmPreRendering.Build
11+
if (!builder.RootComponents.Any())
12+
{
13+
builder.RootComponents.Add<App>("#app");
14+
builder.RootComponents.Add<HeadOutlet>("head::after");
15+
}
1116

12-
builder.Services.AddMudServices();
13-
14-
builder.Services.AddBlazoredLocalStorage();
17+
// Do not change this line, it's for prerendering. See https://github.com/jsakamoto/BlazorWasmPreRendering.Build
18+
ConfigureServices(builder.Services, builder.HostEnvironment.BaseAddress, builder.Configuration);
1519

1620
await builder.Build().RunAsync();
21+
22+
// This method signature follows a convention to enable prerendering.
23+
// See https://github.com/jsakamoto/BlazorWasmPreRendering.Build
24+
static void ConfigureServices(IServiceCollection services, string baseAddress, IConfiguration configuration)
25+
{
26+
services
27+
.AddScoped(sp => new HttpClient { BaseAddress = new Uri(baseAddress) })
28+
.AddMudServices()
29+
.AddBlazoredLocalStorage();
30+
}

src/GIB/wwwroot/index.html

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,7 @@
55
<meta charset="utf-8" />
66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
77
<title>Gradudated Income Boost</title>
8-
9-
<!-- Adapted from https://stackoverflow.com/a/69769086/8435941 -->
10-
<script>
11-
var baseTag = document.createElement("base");
12-
var appRoot = "/gib/";
13-
var path = document.location.pathname;
14-
baseTag.href = (path.indexOf(appRoot) === 0 || path + "/" === appRoot) ? appRoot : "/";
15-
document.head.appendChild(baseTag);
16-
</script>
17-
8+
<base href="/" />
189
<link rel="stylesheet" href="css/app.css" />
1910
<link rel="icon" type="image/png" href="favicon.png" />
2011
<link href="GIB.styles.css" rel="stylesheet" />

0 commit comments

Comments
 (0)