From 4425ac2703e2a48951b7e23a138f47aacec90bea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 9 Mar 2021 17:24:54 +0300 Subject: [PATCH] Implemented blazor server side bundling. --- framework/Volo.Abp.sln | 7 ++++ ...NetCoreComponentsServerBasicThemeModule.cs | 6 ++-- ...etCore.Components.Server.BasicTheme.csproj | 1 + ...AspNetCoreComponentsServerThemingModule.cs | 36 +++++++++++++++++++ .../Bundling/BlazorGlobalBundles.cs | 15 ++++++++ .../Bundling/BlazorGlobalScriptContributor.cs | 15 ++++++++ .../Bundling/BlazorGlobalStyleContributor.cs | 23 ++++++++++++ .../FodyWeavers.xml | 3 ++ .../FodyWeavers.xsd | 30 ++++++++++++++++ ...spNetCore.Components.Server.Theming.csproj | 18 ++++++++++ .../AbpAspNetCoreComponentsServerModule.cs | 12 ++++++- nupkg/common.ps1 | 6 ++-- .../MyProjectNameBlazorServerModule.cs | 5 ++- .../Pages/_Host.cshtml | 28 +++------------ .../Pages/_ViewImports.cshtml | 4 +++ .../TestStyleBundleContributor.cs | 7 ++++ 16 files changed, 184 insertions(+), 32 deletions(-) create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/AbpAspNetCoreComponentsServerThemingModule.cs create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalBundles.cs create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalScriptContributor.cs create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalStyleContributor.cs create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/FodyWeavers.xml create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/FodyWeavers.xsd create mode 100644 framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Volo.Abp.AspNetCore.Components.Server.Theming.csproj create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/_ViewImports.cshtml create mode 100644 templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/TestStyleBundleContributor.cs diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln index b7f8c55121..823b84910a 100644 --- a/framework/Volo.Abp.sln +++ b/framework/Volo.Abp.sln @@ -375,6 +375,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Sms.Aliyun.Tests", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Components.Server", "src\Volo.Abp.AspNetCore.Components.Server\Volo.Abp.AspNetCore.Components.Server.csproj", "{863C18F9-2407-49F9-9ADC-F6229AF3B385}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.AspNetCore.Components.Server.Theming", "src\Volo.Abp.AspNetCore.Components.Server.Theming\Volo.Abp.AspNetCore.Components.Server.Theming.csproj", "{B4B6B7DE-9798-4007-B1DF-7EE7929E392A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -1117,6 +1119,10 @@ Global {863C18F9-2407-49F9-9ADC-F6229AF3B385}.Debug|Any CPU.Build.0 = Debug|Any CPU {863C18F9-2407-49F9-9ADC-F6229AF3B385}.Release|Any CPU.ActiveCfg = Release|Any CPU {863C18F9-2407-49F9-9ADC-F6229AF3B385}.Release|Any CPU.Build.0 = Release|Any CPU + {B4B6B7DE-9798-4007-B1DF-7EE7929E392A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B4B6B7DE-9798-4007-B1DF-7EE7929E392A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B4B6B7DE-9798-4007-B1DF-7EE7929E392A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B4B6B7DE-9798-4007-B1DF-7EE7929E392A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1306,6 +1312,7 @@ Global {ACFBA3FB-18CE-4655-9D14-1F1F5C3DFC30} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} {DADEA538-3CA1-4ADE-A7E6-EF77A0CE4401} = {447C8A77-E5F0-4538-8687-7383196D04EA} {863C18F9-2407-49F9-9ADC-F6229AF3B385} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} + {B4B6B7DE-9798-4007-B1DF-7EE7929E392A} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5} diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/AbpAspNetCoreComponentsServerBasicThemeModule.cs b/framework/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/AbpAspNetCoreComponentsServerBasicThemeModule.cs index 30997f0bda..6cbda610d6 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/AbpAspNetCoreComponentsServerBasicThemeModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/AbpAspNetCoreComponentsServerBasicThemeModule.cs @@ -1,11 +1,13 @@ -using Volo.Abp.AspNetCore.Components.Web.Theming.Routing; +using Volo.Abp.AspNetCore.Components.Server.Theming; +using Volo.Abp.AspNetCore.Components.Web.Theming.Routing; using Volo.Abp.AspNetCore.Components.Web.Theming.Toolbars; using Volo.Abp.Modularity; namespace Volo.Abp.AspNetCore.Components.Web.BasicTheme.Server { [DependsOn( - typeof(AbpAspNetCoreComponentsWebBasicThemeModule) + typeof(AbpAspNetCoreComponentsWebBasicThemeModule), + typeof(AbpAspNetCoreComponentsServerThemingModule) )] public class AbpAspNetCoreComponentsServerBasicThemeModule : AbpModule { diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Volo.Abp.AspNetCore.Components.Server.BasicTheme.csproj b/framework/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Volo.Abp.AspNetCore.Components.Server.BasicTheme.csproj index c835f38442..15df381f03 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Volo.Abp.AspNetCore.Components.Server.BasicTheme.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme/Volo.Abp.AspNetCore.Components.Server.BasicTheme.csproj @@ -15,6 +15,7 @@ + diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/AbpAspNetCoreComponentsServerThemingModule.cs b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/AbpAspNetCoreComponentsServerThemingModule.cs new file mode 100644 index 0000000000..64b5e6f78f --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/AbpAspNetCoreComponentsServerThemingModule.cs @@ -0,0 +1,36 @@ +using Volo.Abp.AspNetCore.Components.Server.Theming.Bundling; +using Volo.Abp.AspNetCore.Components.Web.Theming; +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; +using Volo.Abp.AspNetCore.Mvc.UI.Packages; +using Volo.Abp.Modularity; + +namespace Volo.Abp.AspNetCore.Components.Server.Theming +{ + [DependsOn( + typeof(AbpAspNetCoreComponentsServerModule), + typeof(AbpAspNetCoreMvcUiPackagesModule), + typeof(AbpAspNetCoreComponentsWebThemingModule) + )] + public class AbpAspNetCoreComponentsServerThemingModule : AbpModule + { + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options + .StyleBundles + .Add(BlazorStandardBundles.Styles.Global, bundle => + { + bundle.AddContributors(typeof(BlazorGlobalStyleContributor)); + }); + + options + .ScriptBundles + .Add(BlazorStandardBundles.Scripts.Global, bundle => + { + bundle.AddContributors(typeof(BlazorGlobalScriptContributor)); + }); + }); + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalBundles.cs b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalBundles.cs new file mode 100644 index 0000000000..7112fd342d --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalBundles.cs @@ -0,0 +1,15 @@ +namespace Volo.Abp.AspNetCore.Components.Server.Theming.Bundling +{ + public class BlazorStandardBundles + { + public static class Styles + { + public static string Global = "Blazor.Global"; + } + + public static class Scripts + { + public static string Global = "Blazor.Global"; + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalScriptContributor.cs b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalScriptContributor.cs new file mode 100644 index 0000000000..882827e93f --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalScriptContributor.cs @@ -0,0 +1,15 @@ +using System.Collections.Generic; +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; + +namespace Volo.Abp.AspNetCore.Components.Server.Theming.Bundling +{ + public class BlazorGlobalScriptContributor : BundleContributor + { + public override void ConfigureBundle(BundleConfigurationContext context) + { + context.Files.AddIfNotContains("/_framework/blazor.server.js"); + context.Files.AddIfNotContains("/_content/Blazorise/blazorise.js"); + context.Files.AddIfNotContains("/_content/Blazorise.Bootstrap/blazorise.bootstrap.js"); + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalStyleContributor.cs b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalStyleContributor.cs new file mode 100644 index 0000000000..3c5200dde9 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Bundling/BlazorGlobalStyleContributor.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using Volo.Abp.AspNetCore.Mvc.UI.Bundling; +using Volo.Abp.AspNetCore.Mvc.UI.Packages.Bootstrap; +using Volo.Abp.AspNetCore.Mvc.UI.Packages.FontAwesome; +using Volo.Abp.Modularity; + +namespace Volo.Abp.AspNetCore.Components.Server.Theming.Bundling +{ + [DependsOn( + typeof(BootstrapStyleContributor), + typeof(FontAwesomeStyleContributor) + )] + public class BlazorGlobalStyleContributor : BundleContributor + { + public override void ConfigureBundle(BundleConfigurationContext context) + { + context.Files.AddIfNotContains("/_content/Blazorise/blazorise.css"); + context.Files.AddIfNotContains("/_content/Blazorise.Bootstrap/blazorise.bootstrap.css"); + context.Files.AddIfNotContains("/_content/Blazorise.Snackbar/blazorise.snackbar.css"); + context.Files.AddIfNotContains("/_content/Volo.Abp.AspNetCore.Components.Web.BasicTheme/libs/abp/css/theme.css"); + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/FodyWeavers.xml b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/FodyWeavers.xml new file mode 100644 index 0000000000..00e1d9a1c1 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/FodyWeavers.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/FodyWeavers.xsd b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/FodyWeavers.xsd new file mode 100644 index 0000000000..3f3946e282 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/FodyWeavers.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + 'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed. + + + + + A comma-separated list of error codes that can be safely ignored in assembly verification. + + + + + 'false' to turn off automatic generation of the XML Schema file. + + + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Volo.Abp.AspNetCore.Components.Server.Theming.csproj b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Volo.Abp.AspNetCore.Components.Server.Theming.csproj new file mode 100644 index 0000000000..0ba371b88b --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Components.Server.Theming/Volo.Abp.AspNetCore.Components.Server.Theming.csproj @@ -0,0 +1,18 @@ + + + + + + + net5.0 + true + Library + + + + + + + + + diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/AbpAspNetCoreComponentsServerModule.cs b/framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/AbpAspNetCoreComponentsServerModule.cs index 73556148b0..a5ebf82b76 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/AbpAspNetCoreComponentsServerModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Server/Volo/Abp/AspNetCore/Components/Server/AbpAspNetCoreComponentsServerModule.cs @@ -1,4 +1,6 @@ -using Volo.Abp.Modularity; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.FileProviders; +using Volo.Abp.Modularity; namespace Volo.Abp.AspNetCore.Components.Server { @@ -7,5 +9,13 @@ namespace Volo.Abp.AspNetCore.Components.Server )] public class AbpAspNetCoreComponentsServerModule : AbpModule { + public override void OnApplicationInitialization(ApplicationInitializationContext context) + { + context.GetEnvironment().WebRootFileProvider = + new CompositeFileProvider( + new ManifestEmbeddedFileProvider(typeof(IServerSideBlazorBuilder).Assembly), + context.GetEnvironment().WebRootFileProvider + ); + } } } \ No newline at end of file diff --git a/nupkg/common.ps1 b/nupkg/common.ps1 index 7cb6f54685..1b10d4f632 100644 --- a/nupkg/common.ps1 +++ b/nupkg/common.ps1 @@ -34,12 +34,14 @@ $projects = ( "framework/src/Volo.Abp.AspNetCore.Components", "framework/src/Volo.Abp.AspNetCore.Components.Server", "framework/src/Volo.Abp.AspNetCore.Components.Web", - "framework/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme", - "framework/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme.Server", "framework/src/Volo.Abp.AspNetCore.Components.Web.Theming", + "framework/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme", "framework/src/Volo.Abp.AspNetCore.Components.WebAssembly", "framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.Theming", "framework/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme", + "framework/src/Volo.Abp.AspNetCore.Components.Server", + "framework/src/Volo.Abp.AspNetCore.Components.Server.Theming", + "framework/src/Volo.Abp.AspNetCore.Components.Server.BasicTheme", "framework/src/Volo.Abp.AspNetCore.MultiTenancy", "framework/src/Volo.Abp.AspNetCore.Mvc.Client", "framework/src/Volo.Abp.AspNetCore.Mvc.Client.Common", diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorServerModule.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorServerModule.cs index 7632e1db24..1cea149e84 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorServerModule.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorServerModule.cs @@ -27,6 +27,7 @@ using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; using Volo.Abp.AspNetCore.Serilog; +using Volo.Abp.AspNetCore.VirtualFileSystem; using Volo.Abp.Autofac; using Volo.Abp.AutoMapper; using Volo.Abp.Identity.Blazor; @@ -240,10 +241,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server } app.UseHttpsRedirection(); - app.UseStaticFiles(); - app.UseCorrelationId(); - app.UseVirtualFiles(); + app.UseStaticFiles(); app.UseRouting(); app.UseAuthentication(); app.UseJwtTokenMiddleware(); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/_Host.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/_Host.cshtml index bab19f9001..05c58741dc 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/_Host.cshtml +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/_Host.cshtml @@ -1,7 +1,7 @@ @page "/" @namespace MyCompanyName.MyProjectName.Blazor.Server.Pages @using Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic -@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@using Volo.Abp.AspNetCore.Components.Server.Theming.Bundling @{ Layout = null; } @@ -13,32 +13,12 @@ MyCompanyName.MyProjectName.Blazor.Server - - - - - - - - - - - - + + - - - - - - - - - - - + diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/_ViewImports.cshtml b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/_ViewImports.cshtml new file mode 100644 index 0000000000..c1da1f5f10 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/_ViewImports.cshtml @@ -0,0 +1,4 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bootstrap +@addTagHelper *, Volo.Abp.AspNetCore.Mvc.UI.Bundling \ No newline at end of file diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/TestStyleBundleContributor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/TestStyleBundleContributor.cs new file mode 100644 index 0000000000..c1513a03e2 --- /dev/null +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/TestStyleBundleContributor.cs @@ -0,0 +1,7 @@ +namespace MyCompanyName.MyProjectName.Blazor.Server +{ + public class TestStyleBundleContributor + { + + } +} \ No newline at end of file