2024-04-27 21:57:48 发布
网友
我对jinja2和模板的使用非常陌生,所以我想知道是否有一种简单的方法来加载外部javascript。我想用:
{% block javascript %} <script src="myscript.js"></script> {% endblock %}
但我忍不住问:
是否可以直接从模板指令中加载此脚本?
这个问题已经很老了,但是还有另一种方法可能也很有趣。我在与Jinja2和烧瓶一起工作时发现的。
我用了url_for()它工作得很好:
url_for()
{% block javascript %} <script src="{{ url_for('static',filename='myscript.js') }}"></script> {% endblock %}
我的myscript.js在静态文件夹中。在Jinja2环境中指定,或默认在烧瓶中指定。
myscript.js
这里有两种选择——第一种是您的方式——只需将适当的标记添加到模板中(如果您希望能够在扩展第一个模板的模板中覆盖它,则添加块)
第二种方法是使用Jinja2的^{}函数:
{% block javascript %} <script type="text/javascript"> {% include "myscript.js" %} </script> <!-- The contents of myscript.js will be loaded inside the script tag --> {% endblock %}
使用include的好处是,Jinja2在包含javascript之前会处理它——这意味着javascript中的变量可以根据程序的状态而变化。
include
以这种方式使用include的缺点是相同的——在发送之前,您的.js文件将在Jinja2中运行——如果您不使用动态内容,则只会对每个请求不必要地处理该文件——如果您使用带有Jinja2语法的javascript模板库,则可能会出现问题。
.js
这个问题已经很老了,但是还有另一种方法可能也很有趣。我在与Jinja2和烧瓶一起工作时发现的。
我用了
url_for()
它工作得很好:我的
myscript.js
在静态文件夹中。在Jinja2环境中指定,或默认在烧瓶中指定。这里有两种选择——第一种是您的方式——只需将适当的标记添加到模板中(如果您希望能够在扩展第一个模板的模板中覆盖它,则添加块)
第二种方法是使用Jinja2的^{} 函数:
使用
include
的好处是,Jinja2在包含javascript之前会处理它——这意味着javascript中的变量可以根据程序的状态而变化。以这种方式使用
include
的缺点是相同的——在发送之前,您的.js
文件将在Jinja2中运行——如果您不使用动态内容,则只会对每个请求不必要地处理该文件——如果您使用带有Jinja2语法的javascript模板库,则可能会出现问题。相关问题 更多 >
编程相关推荐