dotnet new blazorserver -o BlazorApp --no-https
BlazorAppinside your current location. Navigate to the new
BlazorAppdirectory created by the following command:
cd BlazorApp
Our theme already contain webpack configuration which we can use to build assets for our Blazor app.
/html/themefolder and paste it into a root of our Blazor app./html/themewe have
/toolsfolder and demo folders, you can leave only demo folder which you will be using, the content of our html files will be placed into a different razor files so
/{demo}/distfolder with
.htmlfiles is not required for this integration./assetsfolder is placed into
/theme/{demo}/dist, in our theme we need to place it into
/wwwrootfolder. We can easily change build output folder path in
tools/webpack.config.js.distPathvariable:
…
const distPath = demoPath + '../../../wwwroot';
…
/html/{demo}/dist/index.htmland paste it into
/Shared/MainLayout.razor. Also we need to copy all body tag attributes and values (id, class, style) and paste them on body in
/Shared/MainLayout.razor./Shared/MainLayout.razorfile, line below is required.
@inherits LayoutComponentBase
/html/{demo}/dist/index.htmlhead tag and paste them into a head tag in file
/Pages/_Layout.cshtml@Body, which will allow us change a content of the page depending on route.
...
<!--begin::Content-->
<div class="content d-flex flex-column flex-column-fluid" id="kt_content">
<!--begin::Container-->
<div id="kt_content_container" class="container-fluid">
@Body
</div>
<!--end::Container-->
</div>
<!--end::Content-->
...
/Shared/MainLayout.razorin OnAfterRenderAsync lifecycle hook.
@inject IJSRuntime JS
@inject NavigationManager MyNavigationManager
@code {
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
await JS.InvokeAsync<IJSObjectReference>("import", MyNavigationManager.ToAbsoluteUri("assets/plugins/global/plugins.bundle.js"));
await JS.InvokeAsync<IJSObjectReference>("import", MyNavigationManager.ToAbsoluteUri("assets/js/scripts.bundle.js"));
}
}
}
dotnet watch run
dotnet watch runcommand builds and startups the app, and then automatically rebuils and restarts the app whenever you make code changes. You can stop the app at any time by selecting
Ctrl+C.