Browse Source

Minify the script returned by ServiceProxyScript.

Resolve #2008
pull/2169/head
maliming 7 years ago
parent
commit
7d0a009a9e
  1. 4
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ProxyScripting/ServiceProxyGenerationModel.cs
  2. 1
      framework/src/Volo.Abp.Http/Volo.Abp.Http.csproj
  3. 2
      framework/src/Volo.Abp.Http/Volo/Abp/Http/AbpHttpModule.cs
  4. 9
      framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptManager.cs
  5. 5
      framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptingModel.cs
  6. 13
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ProxyScripting/AbpServiceProxiesController_Tests.cs

4
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ProxyScripting/ServiceProxyGenerationModel.cs

@ -11,6 +11,8 @@ namespace Volo.Abp.AspNetCore.Mvc.ProxyScripting
public bool UseCache { get; set; } public bool UseCache { get; set; }
public bool Minify { get; set; }
public string Modules { get; set; } public string Modules { get; set; }
public string Controllers { get; set; } public string Controllers { get; set; }
@ -32,7 +34,7 @@ namespace Volo.Abp.AspNetCore.Mvc.ProxyScripting
public ProxyScriptingModel CreateOptions() public ProxyScriptingModel CreateOptions()
{ {
var options = new ProxyScriptingModel(Type, UseCache); var options = new ProxyScriptingModel(Type, UseCache, Minify);
if (!Modules.IsNullOrEmpty()) if (!Modules.IsNullOrEmpty())
{ {

1
framework/src/Volo.Abp.Http/Volo.Abp.Http.csproj

@ -16,6 +16,7 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Volo.Abp.Http.Abstractions\Volo.Abp.Http.Abstractions.csproj" /> <ProjectReference Include="..\Volo.Abp.Http.Abstractions\Volo.Abp.Http.Abstractions.csproj" />
<ProjectReference Include="..\Volo.Abp.Json\Volo.Abp.Json.csproj" /> <ProjectReference Include="..\Volo.Abp.Json\Volo.Abp.Json.csproj" />
<ProjectReference Include="..\Volo.Abp.Minify\Volo.Abp.Minify.csproj" />
</ItemGroup> </ItemGroup>
</Project> </Project>

2
framework/src/Volo.Abp.Http/Volo/Abp/Http/AbpHttpModule.cs

@ -1,12 +1,14 @@
using Volo.Abp.Http.ProxyScripting.Configuration; using Volo.Abp.Http.ProxyScripting.Configuration;
using Volo.Abp.Http.ProxyScripting.Generators.JQuery; using Volo.Abp.Http.ProxyScripting.Generators.JQuery;
using Volo.Abp.Json; using Volo.Abp.Json;
using Volo.Abp.Minify;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
namespace Volo.Abp.Http namespace Volo.Abp.Http
{ {
[DependsOn(typeof(AbpHttpAbstractionsModule))] [DependsOn(typeof(AbpHttpAbstractionsModule))]
[DependsOn(typeof(AbpJsonModule))] [DependsOn(typeof(AbpJsonModule))]
[DependsOn(typeof(AbpMinifyModule))]
public class AbpHttpModule : AbpModule public class AbpHttpModule : AbpModule
{ {
public override void ConfigureServices(ServiceConfigurationContext context) public override void ConfigureServices(ServiceConfigurationContext context)

9
framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptManager.cs

@ -7,6 +7,7 @@ using Volo.Abp.Http.Modeling;
using Volo.Abp.Http.ProxyScripting.Configuration; using Volo.Abp.Http.ProxyScripting.Configuration;
using Volo.Abp.Http.ProxyScripting.Generators; using Volo.Abp.Http.ProxyScripting.Generators;
using Volo.Abp.Json; using Volo.Abp.Json;
using Volo.Abp.Minify.Scripts;
namespace Volo.Abp.Http.ProxyScripting namespace Volo.Abp.Http.ProxyScripting
{ {
@ -17,18 +18,21 @@ namespace Volo.Abp.Http.ProxyScripting
private readonly IJsonSerializer _jsonSerializer; private readonly IJsonSerializer _jsonSerializer;
private readonly IProxyScriptManagerCache _cache; private readonly IProxyScriptManagerCache _cache;
private readonly AbpApiProxyScriptingOptions _options; private readonly AbpApiProxyScriptingOptions _options;
private readonly IJavascriptMinifier _javascriptMinifier;
public ProxyScriptManager( public ProxyScriptManager(
IApiDescriptionModelProvider modelProvider, IApiDescriptionModelProvider modelProvider,
IServiceProvider serviceProvider, IServiceProvider serviceProvider,
IJsonSerializer jsonSerializer, IJsonSerializer jsonSerializer,
IProxyScriptManagerCache cache, IProxyScriptManagerCache cache,
IOptions<AbpApiProxyScriptingOptions> options) IOptions<AbpApiProxyScriptingOptions> options,
IJavascriptMinifier javascriptMinifier)
{ {
_modelProvider = modelProvider; _modelProvider = modelProvider;
_serviceProvider = serviceProvider; _serviceProvider = serviceProvider;
_jsonSerializer = jsonSerializer; _jsonSerializer = jsonSerializer;
_cache = cache; _cache = cache;
_javascriptMinifier = javascriptMinifier;
_options = options.Value; _options = options.Value;
} }
@ -63,7 +67,8 @@ namespace Volo.Abp.Http.ProxyScripting
using (var scope = _serviceProvider.CreateScope()) using (var scope = _serviceProvider.CreateScope())
{ {
return scope.ServiceProvider.GetRequiredService(generatorType).As<IProxyScriptGenerator>().CreateScript(apiModel); var script = scope.ServiceProvider.GetRequiredService(generatorType).As<IProxyScriptGenerator>().CreateScript(apiModel);
return scriptingModel.Minify ? _javascriptMinifier.Minify(script) : script;
} }
} }

5
framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptingModel.cs

@ -8,6 +8,8 @@ namespace Volo.Abp.Http.ProxyScripting
public bool UseCache { get; set; } public bool UseCache { get; set; }
public bool Minify { get; set; }
public string[] Modules { get; set; } public string[] Modules { get; set; }
public string[] Controllers { get; set; } public string[] Controllers { get; set; }
@ -16,10 +18,11 @@ namespace Volo.Abp.Http.ProxyScripting
public IDictionary<string, string> Properties { get; set; } public IDictionary<string, string> Properties { get; set; }
public ProxyScriptingModel(string generatorType, bool useCache = true) public ProxyScriptingModel(string generatorType, bool useCache = true, bool minify = false)
{ {
GeneratorType = generatorType; GeneratorType = generatorType;
UseCache = useCache; UseCache = useCache;
Minify = minify;
Properties = new Dictionary<string, string>(); Properties = new Dictionary<string, string>();
} }

13
framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ProxyScripting/AbpServiceProxiesController_Tests.cs

@ -9,8 +9,19 @@ namespace Volo.Abp.AspNetCore.Mvc.ProxyScripting
[Fact] [Fact]
public async Task GetAll() public async Task GetAll()
{ {
var script = await GetResponseAsStringAsync("/Abp/ServiceProxyScript/"); var script = await GetResponseAsStringAsync("/Abp/ServiceProxyScript?minify=true");
script.Length.ShouldBeGreaterThan(0); script.Length.ShouldBeGreaterThan(0);
} }
[Fact]
public async Task GetAllWithMinify()
{
var script = await GetResponseAsStringAsync("/Abp/ServiceProxyScript");
var minifyScript = await GetResponseAsStringAsync("/Abp/ServiceProxyScript?minify=true");
script.Length.ShouldBeGreaterThan(0);
minifyScript.Length.ShouldBeGreaterThan(0);
minifyScript.Length.ShouldBeLessThan(script.Length);
}
} }
} }

Loading…
Cancel
Save