繁体   English   中英

使用jinja2模板指令加载外部脚本

[英]Loading external script with jinja2 template directive

我对jinja2和一般模板的使用都很新,所以我想知道是否有一种简单的方法来加载外部javascript。 我在考虑使用:

{% block javascript %}
    <script src="myscript.js"></script>
{% endblock %}

但我不禁要问:

有没有一种方法可以直接从模板指令中加载这个脚本?

这里有两个选择 - 第一个是您的选择 - 只需将相应的标记添加到模板中(如果您希望能够在扩展第一个模板的模板中覆盖它,则可以添加块)。

第二种方法是使用Jinja2的include功能:

{% 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的缺点是相同的 - 你的.js文件将在发送之前通过Jinja2运行 - 如果你不使用动态内容,你将只是为每个请求不必要地处理文件 - 如果你正在使用带有Jinja2语法的javascript模板库,那么很可能会遇到麻烦。

这个问题已经很老了,但还有另外一种方法可能也很有趣。 我在使用Jinja2烧瓶时发现了它。

我使用了url_for() ,它工作正常:

{% block javascript %}
    <script src="{{ url_for('static',filename='myscript.js') }}"></script>
{% endblock %}

我在我的静态文件夹中有我的myscript.js 在Jinja2环境中指定,或默认情况下在flask中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM