Browse Source

Bundling refactor.

pull/301/head
Halil ibrahim Kalkan 8 years ago
parent
commit
7108dbc2c2
  1. 2
      src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/BundleManager.cs
  2. 9
      src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperResourceService.cs
  3. 9
      src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperScriptService.cs
  4. 11
      src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperStyleService.cs
  5. 16
      src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Resources/IWebRequestBundleCoordinator.cs
  6. 19
      src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Resources/IWebRequestResources.cs
  7. 29
      src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Resources/WebRequestBundleCoordinator.cs
  8. 40
      src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Resources/WebRequestResources.cs
  9. 17
      src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/JQueryValidation/JQueryValidationScriptContributor.cs

2
src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/BundleManager.cs

@ -67,7 +67,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bundling
protected virtual IReadOnlyList<string> GetBundleFiles(BundleConfigurationCollection bundles, string bundleName, IBundler bundler) protected virtual IReadOnlyList<string> GetBundleFiles(BundleConfigurationCollection bundles, string bundleName, IBundler bundler)
{ {
var files = RequestResources.TryAdd(CreateFileList(bundles, bundleName)); var files = RequestResources.Filter(CreateFileList(bundles, bundleName));
if (!IsBundlingEnabled()) if (!IsBundlingEnabled())
{ {

9
src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperResourceService.cs

@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Razor.TagHelpers;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Mvc.UI.Resources;
using Volo.Abp.AspNetCore.VirtualFileSystem; using Volo.Abp.AspNetCore.VirtualFileSystem;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
@ -14,12 +15,16 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers
protected IHybridWebRootFileProvider WebRootFileProvider { get; } protected IHybridWebRootFileProvider WebRootFileProvider { get; }
protected IWebRequestResources WebRequestResources { get; }
protected AbpTagHelperResourceService( protected AbpTagHelperResourceService(
IBundleManager bundleManager, IBundleManager bundleManager,
IHybridWebRootFileProvider webRootFileProvider) IHybridWebRootFileProvider webRootFileProvider,
IWebRequestResources webRequestResources)
{ {
BundleManager = bundleManager; BundleManager = bundleManager;
WebRootFileProvider = webRootFileProvider; WebRootFileProvider = webRootFileProvider;
WebRequestResources = webRequestResources;
} }
public virtual Task ProcessAsync( public virtual Task ProcessAsync(
@ -56,6 +61,8 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers
AddHtmlTag(context, output, bundleFile + "?_v=" + file.LastModified.UtcTicks); AddHtmlTag(context, output, bundleFile + "?_v=" + file.LastModified.UtcTicks);
} }
WebRequestResources.Add(bundleFiles);
return Task.CompletedTask; return Task.CompletedTask;
} }

9
src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperScriptService.cs

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.AspNetCore.Razor.TagHelpers;
using Volo.Abp.AspNetCore.Mvc.UI.Resources;
using Volo.Abp.AspNetCore.VirtualFileSystem; using Volo.Abp.AspNetCore.VirtualFileSystem;
namespace Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers namespace Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers
@ -9,10 +10,12 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers
{ {
public AbpTagHelperScriptService( public AbpTagHelperScriptService(
IBundleManager bundleManager, IBundleManager bundleManager,
IHybridWebRootFileProvider webRootFileProvider IHybridWebRootFileProvider webRootFileProvider,
IWebRequestResources webRequestResources
) : base( ) : base(
bundleManager, bundleManager,
webRootFileProvider) webRootFileProvider,
webRequestResources)
{ {
} }

11
src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/TagHelpers/AbpTagHelperStyleService.cs

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Microsoft.AspNetCore.Razor.TagHelpers; using Microsoft.AspNetCore.Razor.TagHelpers;
using Volo.Abp.AspNetCore.Mvc.UI.Resources;
using Volo.Abp.AspNetCore.VirtualFileSystem; using Volo.Abp.AspNetCore.VirtualFileSystem;
namespace Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers namespace Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers
@ -9,10 +10,12 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers
{ {
public AbpTagHelperStyleService( public AbpTagHelperStyleService(
IBundleManager bundleManager, IBundleManager bundleManager,
IHybridWebRootFileProvider webRootFileProvider IHybridWebRootFileProvider webRootFileProvider,
) : base( IWebRequestResources webRequestResources
bundleManager, ) : base(
webRootFileProvider) bundleManager,
webRootFileProvider,
webRequestResources)
{ {
} }

16
src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Resources/IWebRequestBundleCoordinator.cs

@ -1,16 +0,0 @@
using System.Collections.Generic;
namespace Volo.Abp.AspNetCore.Mvc.UI.Resources
{
public interface IWebRequestResources
{
/// <summary>
/// Adds resouces to to current web request except the ones added before.
/// </summary>
/// <param name="resources">Candidate resources to be added</param>
/// <returns>Resources actually added</returns>
List<string> TryAdd(IEnumerable<string> resources);
bool TryAdd(string resource);
}
}

19
src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Resources/IWebRequestResources.cs

@ -0,0 +1,19 @@
using System.Collections.Generic;
namespace Volo.Abp.AspNetCore.Mvc.UI.Resources
{
public interface IWebRequestResources
{
/// <summary>
/// Filters given resources and returns a list of resources those are not
/// added to the page for current web request.
/// </summary>
List<string> Filter(IEnumerable<string> resources);
bool IsAddedBefore(string resource);
void Add(IEnumerable<string> resources);
IReadOnlyList<string> GetAll();
}
}

29
src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Resources/WebRequestBundleCoordinator.cs

@ -1,29 +0,0 @@
using System.Collections.Generic;
using System.Linq;
using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Mvc.UI.Resources
{
public class WebRequestResources : IWebRequestResources, IScopedDependency
{
protected List<string> Resources { get; }
public WebRequestResources()
{
Resources = new List<string>();
}
public virtual List<string> TryAdd(IEnumerable<string> resources)
{
var newFiles = resources.Except(Resources).ToList();
Resources.AddRange(newFiles);
return newFiles;
}
public bool TryAdd(string resource)
{
return Resources.AddIfNotContains(resource);
}
}
}

40
src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Resources/WebRequestResources.cs

@ -0,0 +1,40 @@
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Mvc.UI.Resources
{
public class WebRequestResources : IWebRequestResources, IScopedDependency
{
protected List<string> Resources { get; }
public WebRequestResources()
{
Resources = new List<string>();
}
public List<string> Filter(IEnumerable<string> resources)
{
return resources.Except(Resources).ToList();
}
public bool IsAddedBefore(string resource)
{
return Resources.Contains(resource);
}
public void Add(IEnumerable<string> resources)
{
foreach (var resource in resources)
{
Resources.AddIfNotContains(resource);
}
}
public IReadOnlyList<string> GetAll()
{
return Resources.ToImmutableList();
}
}
}

17
src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/JQueryValidation/JQueryValidationScriptContributor.cs

@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization;
using Volo.Abp.AspNetCore.Mvc.UI.Bundling; using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.JQuery; using Volo.Abp.AspNetCore.Mvc.UI.Packages.JQuery;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
@ -8,9 +9,25 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Packages.JQueryValidation
[DependsOn(typeof(JQueryScriptContributor))] [DependsOn(typeof(JQueryScriptContributor))]
public class JQueryValidationScriptContributor : BundleContributor public class JQueryValidationScriptContributor : BundleContributor
{ {
public const string DefaultLocalizationFolder = "/libs/jquery-validation/localization/";
public static Dictionary<string, string> LocalizationMapping { get; } = new Dictionary<string, string>
{
//TODO: Add all!
{"ar", DefaultLocalizationFolder + "messages_ar.js"},
{"tr", DefaultLocalizationFolder + "messages_tr.js"}
};
public override void ConfigureBundle(BundleConfigurationContext context) public override void ConfigureBundle(BundleConfigurationContext context)
{ {
context.Files.AddIfNotContains("/libs/jquery-validation/jquery.validate.js"); context.Files.AddIfNotContains("/libs/jquery-validation/jquery.validate.js");
//context.PostDynamicFiles.AddIfNotContains("/libs/jquery-validation/localization/messages_" + CultureInfo.CurrentUICulture.Name + ".js");
}
public void ConfigureDynamic(BundleConfigurationContext context)
{
//TODO: !!!
context.Files.AddIfNotContains("/libs/jquery-validation/localization/messages_" + CultureInfo.CurrentUICulture.Name + ".js");
} }
} }
} }

Loading…
Cancel
Save