2010-08-05 17 views
17

Ich bin sehr neu zu jinja2 und die Verwendung von Vorlagen im Allgemeinen, so dass ich mich fragte, ob es eine einfache Möglichkeit ist, ein externes Javascript zu laden. Ich dachte an mit:Laden externe Skript mit Jinja2 Vorlage Direktive

{% block javascript %} 
    <SCRIPT SRC="myscript.js"></SCRIPT> 
{% endblock %} 

Aber ich kann nicht fragen helfen:

Gibt es eine Möglichkeit zum Laden dieses Skript direkt aus einer Vorlage Richtlinie?

Antwort

28

Sie haben hier zwei Möglichkeiten - die erste ist die Art, wie Sie es getan haben - fügen Sie einfach das entsprechende Markup in eine Vorlage (oder einen Block, wenn Sie es in Vorlagen, die Ihre erste Vorlage erweitern möchten, überschreiben können) .)

der zweite Weg ist Jinja2 der include-Funktion: es vor, einschließlich

{% block javascript %} 
    <script type="text/javascript"> 
     {% include "myscript.js" %} 
    </script> 
    <!-- The contents of myscript.js will be loaded inside the script tag --> 
{% endblock %} 

der Vorteil include ist, dass Jinja2 Ihr Javascript verarbeitet - was bedeutet, dass Sie Variablen in JavaScript haben kann, die ändern sich abhängig vom Status Ihres Programms.

Der Nachteil der Verwendung include auf diese Weise ist das gleiche - Ihre .js Datei wird durch Jinja2 vor dem Versand ausgeführt werden - wenn Sie nicht dynamischen Inhalt verwenden Sie die Datei nur unnötig für jede Anfrage verarbeiten - - und wenn Sie eine JavaScript-Templating-Bibliothek mit Jinja2-Syntax verwenden, ist wahrscheinlich ein Problem.

+0

Also wird dies im Grunde alles in der Datei myscript.js zwischen diesen Tags enthalten, ich habe ich richtig? Irgendein Grund könnte ich nicht verwenden, um eine Textdatei oder etwas anderes einzuschließen? – kirbuchi

+0

@kirbuchi - ja, genau. Die gleichen Kompromisse gelten. –

+0

Schön! Vielen Dank – kirbuchi