为什么不将SCSS和JS文件放在Django模板文件夹中,然后将CSS / JS编译为static /

时间:2020-07-05 16:35:51

标签: css django django-staticfiles

当前,我有一个像这样的项目文件夹结构: (实际上,这有点复杂,但是我认为这解决了关键问题)

project/
    |----assets/        
    |       |----scss/    # Compiles to static/css/
    |       |----js/      # Minified to static/js/
    |
    |----static/
    |       |----css/
    |       |----js/
    |
    |-----app_a/
    |       |----templates/
    |                |----file_a1.html
    |                |----file_a2.html
    |                |----file_a3.html
    |
    |-----app_b/
            |----templates/
                     |----file_b1.html
                     |----file_b2.html
                     |----file_b3.html

此刻,我的SCSS文件分解如下(不一致):

  • 用于多个模板的一些SCSS文件代码(从逻辑上讲,对于该实例来说是有意义的,例如一组小部件)
  • 模板中有一些嵌入式代码
  • 一些与单个模板相对应的SCSS文件。

我希望对其进行重构以进行清理。我read this answer about multiple CSS files解释了一个大CSS文件的优点,这要归功于HTTP2。实际上,人们建议拆分文件,因为并发会更快。

因此,每个(Django)应用程序将有一个CSS文件。

我发现最难处理的部分是样式和javascript,它们仅适用于单个页面。 (免责声明:是的,我使用SCSS占位符和扩展名,并且具有适当的框架)。

我当时想取出所有嵌入的样式/脚本,然后将它们放在与模板相对应的单个文件中。我已经仔细搜索了Django Compressor和朋友,并决定不使用这些解决方案。还要拆分用于多个模板的scss文件,但是每个模板的样式都是独立的。

使用一个与模板相关的SCSS和JS文件的问题是,它们位于远离模板目录的较远目录中,我觉得将SCSS / JS放在模板目录中将使其保持同步变得更加容易。 ed并跟踪发生了什么。

想到在.scss目录中放置.jstemplates/文件的想法使我看起来很奇怪,但对我来说似乎是个好主意。

所以新结构如下:

project/
    |
    |----assets/
    |       |----css/
    |       |     |----base.css
    |       |
    |       |----js/
    |             |----base.js
    |
    |----static/
    |       |----css/
    |       |     |----base.css
    |       |     |----app_a.css
    |       |     |----app_b.css
    |       |     |----app_c.css
    |       |
    |       |----js/
    |             |----base.min.js
    |             |----app_a.min.js
    |             |----app_b.min.js
    |             |----app_c.min.js
    |
    |-----app_a/
    |       |----templates/
    |                |----file_a1.html
    |                |----file_a1.scss
    |                |----file_a1.js
    |                |----file_a2.html
    |                |----file_a2.js
    |                |----file_a2.scss
    |                |----file_a3.html
    |                |----file_a3.scss
    |                |----file_a3.js
    |
    ... the same for app_b etc

这是我能想到的最好的方法,但是感觉不对。 “没有顾问,计划就会失败,但是有了许多顾问,他们才能成功。” ...那么是否有其他推荐的结构或原因,为什么不将scss / js混入模板目录?

0 个答案:

没有答案