Javascript 正确使用REQUIRE\u BASE\u URL和django REQUIRE

Javascript 正确使用REQUIRE\u BASE\u URL和django REQUIRE,javascript,django,requirejs,Javascript,Django,Requirejs,我试图让django require管理JS依赖项和缩小。但是,我在使用requireJSbaseUrl时遇到了困难 require.js位于project/static/require.js,而页面js位于project/static/pages/pageA.js等等 以下是django要求的设置 REQUIRE_BASE_URL = os.path.join(PROJECT_DIR, 'static') REQUIRE_BUILD_PROFILE = 'app.build.js' REQUI

我试图让django require管理JS依赖项和缩小。但是,我在使用requireJS
baseUrl
时遇到了困难

require.js
位于
project/static/require.js
,而页面js位于
project/static/pages/pageA.js
等等

以下是django要求的设置

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')
<script data-main="/var/www/project/static/pages/pageA.js" src="/var/www/project/static/require.js"></script>
REQUIRE_BASE_URL = 'static'
然后编译过程就成功了(
node
finds
r.js
等等)。但是,
{%require\u module pages/pageA%}
等模板标记的呈现方式如下:

REQUIRE_BASE_URL = os.path.join(PROJECT_DIR, 'static')
<script data-main="/var/www/project/static/pages/pageA.js" src="/var/www/project/static/require.js"></script>
REQUIRE_BASE_URL = 'static'
然后编译步骤失败,因为调用
r.js
的路径在本地文件系统上不存在(但在网站上可能存在):

在这种情况下,渲染的脚本标记是正确的

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


编辑:也发布到django require邮件列表。

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

因此,在您的情况下,我将使用django require的所有默认设置,然后只设置require\u BUILD\u PROFILE

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

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


将settings.py中的设置减少为仅
REQUIRE\u BUILD\u PROFILE=“app.BUILD.js”
(和
静态文件存储
)似乎已经奏效。我仍然可以使用相对路径连接所有的JS,而无需展平树,这样就不会破坏东西<代码>静态收集优化也可以工作,以及独立模块构建。