0

我正在努力django-require管理 JS 依赖项和缩小。但是,我在使用 requireJS 时遇到了困难baseUrl

require.js是 at project/static/require.js,页面 JS 是 atproject/static/pages/pageA.js等等。

以下是 django-require 设置。

REQUIRE_BASE_URL = os.path.join(PROJECT_DIR, 'static')
REQUIRE_BUILD_PROFILE = 'app.build.js'
REQUIRE_JS = "require.js"
REQUIRE_STANDALONE_MODULES = {}
REQUIRE_DEBUG = DEBUG
REQUIRE_EXCLUDE = ("build.txt",)
REQUIRE_ENVIRONMENT = "auto"

在静态文件收集/处理期间以及通过浏览器提供服务时,我无法使基本 URL 正确。如果我这样设置:

REQUIRE_BASE_URL = os.path.join(PROJECT_DIR, 'static')

那么编译过程就成功了(nodefindsr.js等等)。然而,像这样{% require_module pages/pageA %}渲染的模板标签是这样的:

<script data-main="/var/www/project/static/pages/pageA.js" src="/var/www/project/static/require.js"></script>

这从浏览器端失败,因为路径是机器实际文件系统上的路径,而不是网站结构中的路径!

但是,如果我这样设置基本 URL:

REQUIRE_BASE_URL = 'static'

然后编译步骤失败,因为r.js正在使用本地文件系统上不存在的路径调用(但会存在于网站上):

File "/usr/local/lib/python2.7/dist-packages/require/storage.py", line 50, in run_optimizer
  raise OptimizationError("Error while running r.js optimizer.")

在这种情况下,呈现的脚本标签是正确的。

提供本地文件路径的正确方法是什么r.js,但在模板标签中输出与网站相关的路径django-require

编辑:也在这里发布到 django-require 邮件列表。

4

1 回答 1

1

根据我的经验,如果所有主要脚本(如在 requirejs 脚本标签上设置为 data-main )都位于 baseUrl 的根目录中,RequireJS 的效果会更好。

所以,在你的情况下,我会使用 django-require 的所有默认设置,然后只设置 REQUIRE_BUILD_PROFILE。

然后,我会将所有数据主脚本放在 js 文件夹的根目录中。

RequireJS 的作者实际上建议保持 RequireJS 项目的文件夹结构非常简单。

http://requirejs.org/docs/api.html#jsfiles

于 2013-05-28T08:58:28.670 回答