0

我可以防止一个文件在模板中多次包含吗?

这是一些(损坏的)示例代码:

# test.py
import jinja2

ENV = jinja2.Environment(loader=jinja2.FileSystemLoader('.'))

template = ENV.get_template('template.html')
print template.render({})

模板如下所示:

{% include 'includejquery.html' %}
{% include 'includejquery.html' %}

如您所见,我已经包含了 jquery 两次(哎呀)。我希望我可以做一些类似于我将使用 C 预处理器的事情:

{% if _JQUERY is defined %}
{% else %}
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
{% set _JQUERY = 1 %}
{% endif %}

但这似乎不起作用。这里有什么干净的解决方案吗?

我这样做的原因是因为我有多个组件——如果每个组件都有自己的包含文件,其中包含使用该组件所需的一切,那就太好了。目前我正在将 JQuery 从包含文件中剔除,但是随着依赖项的增长并且多次包含 JQuery 会导致某些脚本中断,这可能会变得乏味。

4

1 回答 1

2

我曾经解决过这样的问题:

base.html:

{% set media_files = [] %}

子模板:

{% extends 'base.html' %}
{{ media_files.append('jquery.js') }}

这些天来,我建议使用 RequireJS、HeadJS 或 YepNope 之类的东西

于 2013-10-01T19:03:56.190 回答