【问题标题】:Combres and DotLessCssFilterCombres 和 DotLessCssFilter
【发布时间】:2011-01-27 14:54:28
【问题描述】:

短期内我无法让它发挥作用。过滤器似乎无法自行应用。

我正在尝试让梳子与我的 MVC 3 剃须刀应用程序一起使用。除了 DotLessCssFilter,我什么都可以工作。

在文档中说In order to apply a filter to your resource sets, you need to modify your Combres config file

我已经像这样修改了combres.config:

<combres xmlns='urn:combres'>
    <filters>
        <filter type="Combres.Filters.DotLessCssFilter, Combres" acceptedResourceSets="dotLessCss" />
    </filters>
    <resourceSets url="~/combres.axd" defaultDuration="30" defaultVersion="1" defaultVersionGenerator="Combres.VersionGenerators.Sha512VersionGenerator">
        <resourceSet name="siteCss" type="css">
            <resource path="~/UI/Styles/1140.css" />
            <resource path="~/UI/Styles/typeimg.css" />
            <resource path="~/UI/Styles/layout.css" />
        </resourceSet>
        <resourceSet name="siteJs" type="js">
            <resource path="~/UI/Scripts/opt/util.js" />
            <resource path="~/UI/Scripts/opt/core.js" />
        </resourceSet>
    </resourceSets>
</combres>

它会合并文件并按应有的方式缩小。

在我的一个文件中,我有一个简单的less-syntax:

@sprite: url(/ui/styles/sprite.png);

.foo {
  background-image: @sprite;
}

但似乎从未通过过滤器。

不知道这是 MVC 问题还是一般问题。

有人成功使用过这个过滤器吗?

没关系! (编辑)

查看答案

【问题讨论】:

    标签: asp.net-mvc combres


    【解决方案1】:

    错过了 acceptedResourceSets="dotLessCss" 它需要有正确的资源集名称,所以在我的情况下:

    acceptedResourceSets="siteCss"

    【讨论】:

      【解决方案2】:

      除非你愿意,否则你实际上并不需要有一个接受的资源集。

      这是一个来自我作为 POC 所做的测试项目的示例 Combres.xml 文件(请参阅 cmets):

      <?xml version="1.0" encoding="utf-8"?>
      <combres xmlns="urn:combres">
        <filters>
          <!-- This filter allows relative urls to be used in Css files like in .NET; e.g. "~/MyFolder/MyPic.png"-->
          <filter type="Combres.Filters.FixUrlsInCssFilter, Combres" />
          <!-- This filter allows you to define variables in a CSS file and reuse them throughout the file. -->
          <filter type="Combres.Filters.HandleCssVariablesFilter, Combres" />
          <!-- This filter changes Combres order of ops so that common css variables can be defined in a single
               file and used throughout multiple css files, instead of having to define them in each file. -->    
          <filter type="Combres.Filters.DotLessCssCombineFilter, Combres" />
        </filters>
        <resourceSets defaultDebugEnabled="false" 
                      defaultDuration="30" 
                      defaultIgnorePipelineWhenDebug="true" 
                      defaultVersion="auto" 
                      localChangeMonitorInterval="30" 
                      remoteChangeMonitorInterval="60" 
                      url="~/combres.axd">
          <resourceSet name="siteCss" type="css">
            <resource path="~/content/Variables.css" />
            <resource path="~/content/Test1.css" />
            <resource path="~/content/Test2.css" />
            <resource path="~/content/Site.css" />
          </resourceSet>
          <resourceSet name="siteJs" type="js">
            <resource path="~/scripts/jquery-1.7.1.min.js" />
            <resource path="~/scripts/jquery-ui-1.8.17.min.js" />
            <resource path="~/scripts/jquery.unobtrusive-ajax.min.js" />
            <resource path="~/scripts/modernizr-1.7.min.js" />      
          </resourceSet>
        </resourceSets>
      </combres>
      

      变量.css:

      @sprite: url('~/Content/ui/styles/sprite.png');
      

      Test1.css:

      .fooTest1 {背景图像:@sprite;}

      Test2.css:

      .fooTest2 {背景图像:@sprite;}

      输出(通过 Firebug .NET 选项卡):

      .fooTest1{background-image:url("/Content/ui/styles/sprite.png")}.fooTest2{background-image:url("/Content/ui/styles/sprite.png")}
      

      我认为在您的示例应用程序中,您甚至不需要注册 DotLessCssFilter,而只需注册 HandleCssVariablesFilter。

      然后您可以在每个 css 文件中定义 css 变量(不重复使用)。

      但是如果你想在多个文件之间定义和共享 css 变量,像我上面那样设置过滤器注册,就像一个魅力。

      Buu Nguyen 在 Combres 项目上做得很好。

      【讨论】:

      • 我会进一步说,我希望 MVC 团队将 Combres 功能合并到 MVC 中,而不是当前的捆绑。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多