【问题标题】:How to use django-compressor with multiple LESS files that import common files?如何将 django-compressor 与多个导入通用文件的 LESS 文件一起使用?
【发布时间】:2013-04-13 06:54:42
【问题描述】:

我在我的 Django 项目中组织了模板,使网站上的每个页面都包含一个“通用”LESS 文件,并且每个页面还可以指定另一个包含页面特定样式的 LESS 文件。

问题是我需要特定于页面的 LESS 文件才能引用“通用”LESS 文件中的变量。我认为最简单的方法是简单地将变量声明移动到一个单独的文件中,两个 LESS 文件都可以@import

但是,Django 应用程序使用单独的目录来存储它们的静态文件。最后,文件系统看起来像这样:

- 常见的
   - 静止的
      -CSS
         - 定义.less
         - common.less
- 其他
   - 静止的
      -CSS
         - other.less

common.lessother.less 都需要导入definitions.less。对于common.less,这很简单:

@import "definitions.less";

以下是页面中实际包含 LESS 文件的方式,以防万一:

{% load compress %}
{% load static %}

{% compress css %}
    <link href="{% static "css/common.less" %}"
          rel="stylesheet" type="text/less">
{% endcompress %}

确保公共变量定义可用于两个 LESS 文件的最简单方法是什么?我想避免合并 LESS 文件有几个原因:

  • 它消除了松散耦合的好处(停用应用程序而不会对站点的其余部分产生任何副作用的能力)。
  • 由于必须获取所有应用的所有样式,因此增加了为单个页面检索的额外数据。

【问题讨论】:

  • 您找到答案了吗?我也遇到过同样的问题
  • 关于解决这个问题的任何消息?

标签: css django less django-compressor


【解决方案1】:

我们在我们的应用程序中做同样的事情——我们有一个公共文件 main.less,它包含在许多其他 less 文件中。但是,我们没有遇到这个问题。我认为有几种方法可以解决它 - 您可以更改静态文件的位置。

django STATICFILES_DIRS 中有一个设置——如果你愿意,你可以更改静态文件的位置,而不是嵌套在这样的应用程序中。 https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-STATICFILES_DIRS

我们的代码如下所示

{% compress css %}
{% include "_base_css.html" %}
{% endcompress %}

然后 _base_css.html 只包含所有的 less 文件,我们的 main.less 先出现。

## _base_css.html
<link rel="stylesheet" type="text/less" href="{{ STATIC_URL }}css/main.less">
<link rel="stylesheet" type="text/less" href="{{ STATIC_URL }}css/about.less">
<link rel="stylesheet" type="text/less" href="{{ STATIC_URL }}css/dashboard.less">

从您的问题中我不清楚错误是什么,但我相信您的常见 less 文件需要在任何其他 less 文件可访问之前包含在内。在您的代码 sn-p 中,您似乎没有包含它。在压缩方面,我不认为将整个站点的所有 css 压缩到一个文件中太糟糕了——它是第一次下载,然后被完全缓存。

希望这对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 2019-12-09
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 2018-03-26
    相关资源
    最近更新 更多