有没有办法在Django中为不同的模板加载、最小化和组合不同的javascript文件?
现在,我在有没有办法在Django中为不同的模板加载、最小化和组合不同的javascript文件?,javascript,django,django-templates,django-pipeline,Javascript,Django,Django Templates,Django Pipeline,现在,我在PIPELINE_JS设置中放置了一些常见的javascript文件。但我还想根据每个模板加载更具体的js文件。我知道我可以简单地添加一个script标记,在每个模板中包含相应的js文件,但这会向服务器添加额外的请求,我认为这不是一个好主意。我想要做的理想方法是使用管道加载、最小化和组合基于不同模板的不同js文件。有什么方法可以做到这一点吗?是的,非常简单: PIPELINE_JS = { 'stats': { 'source_filenames': (
PIPELINE_JS
设置中放置了一些常见的javascript文件。但我还想根据每个模板加载更具体的js文件。我知道我可以简单地添加一个script
标记,在每个模板中包含相应的js文件,但这会向服务器添加额外的请求,我认为这不是一个好主意。我想要做的理想方法是使用管道
加载、最小化和组合基于不同模板的不同js文件。有什么方法可以做到这一点吗?是的,非常简单:
PIPELINE_JS = {
'stats': {
'source_filenames': (
'js/jquery.js',
'js/application.js',
),
'output_filename': 'js/stats.js',
},
'logged_in': {
'source_filenames': (
'js/jquery.js',
'js/collections/*.js',
'js/application.js',
),
'output_filename': 'js/logged_in.js',
},
#and so on..
}
在模板中包含时
{% load compressed %}
{% compressed_js 'stats' %}
在要导入其他目标的另一个模板中
{% load compressed %}
{% compressed_js 'logged_in' %} {# or whichever you wish to import #}
为了更好地理解。您可以在模板中使用一个“js”块,并在每个从“基础”继承的页面上向其添加脚本,js文件会以任何方式被缓存,您可以使用commpress命令:)@lalo pipeline也会对其进行压缩。pipeline是否提供继承结构?我的意思是,正如在您的示例中一样,js/jquery.js应该包含在每个模板中,手动将其包含在每个目标中有点繁琐。在base.html中,有一个名为
pipeline
的块部分,然后在需要特定目标的位置,覆盖那些特定模板中的块。我要做的不是覆盖整个块。我只想在原始模板或基本模板中向目标添加一些新的js文件,并使其成为管道中的一个新的压缩文件。它们在派生html文件中的块的开头使用{{block.super}