【问题标题】:Django-pipeline and javascript dependenciesDjango 管道和 javascript 依赖项
【发布时间】:2012-09-04 20:48:00
【问题描述】:

我正在开发一个使用 Django 管道作为资产的 Django 项目,我一直遇到问题,我在一个 javascript 文件中定义了另一个文件所需的内容,但第二个文件在第一个文件之前加载,因此第二个文件无法正确加载。我可以弄乱包含在 PIPELINE_JS 中的顺序,但这很难处理。在大多数语言中,您可以执行require foo 之类的操作来确保 foo 已定义,但使用 javascript 和 django-pipeline 似乎是不可能的。我对 RequireJS 进行了一些研究,但我不确定是否可以将它与 django-pipeline 一起使用。在这种情况下我该怎么办?其他使用 django-pipeline 或 django 的人一般会为 javascript 依赖管理做什么?

作为旁注,我实际上使用的是 Coffeescript,而不是直接的 Javascript,但这似乎对事情没有任何帮助。在 Rails 中,我可以使用 #= require 'foo' 来要求另一个咖啡脚本文件,但这似乎与 rails 资产管道相关联。

【问题讨论】:

  • 这两个文件是否在一个单独的组中?你能提供你的PIPELINE_JS 设置吗?
  • 大部分在同一组中。 PIPELINE_JS 本质上是一堆组,它们主要是通过使用 glob2.glob 对一些目录进行通配而形成的。例如,在某个目录中,我有依赖于 utils.coffee 的 content.coffee,到目前为止,我还没有找到一种方法来在 content.coffee 中指示应该在它之前加载 utils.coffee。对我来说,一个理想的解决方案不需要弄乱 PIPELINE_JS 中的字符串顺序,因为如果我以后添加另一个依赖于 utils.coffee 的文件,我将不得不再次深入研究该文件。
  • 你好@cyberdelia!感谢您回答我的问题!当图书馆的作者在 Stackoverflow 上回答您的问题时,令人兴奋:)

标签: javascript django coffeescript requirejs


【解决方案1】:

这样做的唯一方法是相应地对'source_filenames' 列表进行排序,还请记住,在运行collectstatic 时,这些文件将按此顺序连接。

管道将遵守此顺序,它还将避免重复,以便您在执行此操作时安全:

'base.coffee',
'*.coffee', 

django-pipeline 中目前没有“require”语法。 希望这会有所帮助。

【讨论】:

  • 嗯,我想我可以在 globbing 之前将更重要的文件单独放在列表中。这不是我真正希望的答案,但我想它解决了我的直接问题。
猜你喜欢
  • 2020-06-11
  • 1970-01-01
  • 2013-05-06
  • 2012-10-16
  • 2021-02-26
  • 2016-12-02
  • 1970-01-01
  • 2011-03-13
  • 2018-04-02
相关资源
最近更新 更多