- Published on
1.0.0-beta.10 - XML sitemap and Better way of finding pages
Breaking Changes
RazorPagesPathsis no longer available. It was used to get the location of razor pages to scan for the@pagedirective. Now, BlazorStatic scans the assembly for all pages.AddNonParametrizedRazorPageswas renamed toAddPagesWithoutParametersas it clearly describes what it is about.
Features
XML sitemap and a better way of finding pages.
XML Sitemap
Check an example here.
BlazorStatic now includes the ability to generate an XML sitemap, which is beneficial for search engine optimization ( SEO). To generate a proper sitemap, you can configure three new settings, two of which are required.
builder.Services.AddBlazorStaticService(opt => {
opt.ShouldGenerateSitemap = true;
opt.SiteUrl = "https://tesar-tech.github.io/BlazorStatic";
});
The first setting is a switch that tells the library to generate the sitemap.
The second setting, SiteUrl, is required because BlazorStatic cannot determine the site URL when generating static
files.
If you don't provide the SiteUrl, you will encounter a warning, and the sitemap will not be generated.
warn: BlazorStatic.Services.BlazorStaticService[0]
'BlazorStaticOptions.SiteUrl' is null or empty! Can't generate Sitemap. Either provide the site url or set 'BlazorStaticOptions.ShouldGenerateSitemap' to false
The sitemap.xml file is generated by default to wwwroot/sitemap.xml.
This ensures the file is available not only as a result of static file generation but also during the web app runtime (
and debugging).
Since sitemap.xml is a generated file, you might want to consider making it ignored by Git.
Better way of finding pages
- You no longer need to use the
@pagedirective; you can use theRouteattribute instead (the@pagedirective is translated to that anyway).
Before:
@page "/projects"
After:
@attribute [Route("/projects")]*@
You might say it is uglier now, and you would be right.
The @page directive simplifies the usage of the Route attribute, but it only supports strings.
To avoid magic strings and keep all routes in a single place, I recommend defining routes centrally.
For example, in BlazorStaticWebsite, the projects page is defined as:
@attribute [Route($"/{WebsiteKeys.ProjectsUrl}")]
Which keeps the project string definition in one place.
