2010-08-05 9 views
17

Jestem bardzo nowy w jinja2 i ogólnie używam szablonów, więc zastanawiałem się, czy istnieje łatwy sposób na załadowanie zewnętrznego javascriptu. Myślałem o użyciu:Ładowanie zewnętrznego skryptu z szablonem jinja2

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

Ale nie mogę pomóc, aby zapytać:

Czy istnieje sposób załadunku skrypt bezpośrednio z dyrektywy szablonu?

Odpowiedz

28

Masz tu dwie możliwości - pierwszą jest sposób, w jaki to zrobiłeś - po prostu dodaj odpowiedni znacznik do szablonu (lub bloku, jeśli chcesz mieć możliwość przesłonięcia go w szablonach, które rozszerzają twój pierwszy szablon .)

Drugim sposobem jest użycie Jinja2 za include funkcja:

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

zaletą korzystania include że Jinja2 przetwarza javascript przed włączeniem go - co oznacza, że ​​można mieć zmienne w JavaScript, który zmieniać w zależności od stanu twojego programu.

Wada polegająca na użyciu include w ten sposób jest taka sama - Twój plik .js zostanie uruchomiony przez serwer Jinja2, zanim zostanie wysłany - jeśli nie korzystasz z zawartości dynamicznej, przetwarzanie pliku będzie niepotrzebne dla każdego żądania - - i jeśli używasz biblioteki szablonów javascript ze składnią Jinja2, to problem jest prawdopodobny.

+0

Więc to zasadniczo będzie zawierać wszystko wewnątrz pliku myscript.js pomiędzy tymi tagami, mam rację? Nie ma powodu, dla którego nie mógłbym użyć tego pliku tekstowego lub czegoś innego? – kirbuchi

+0

@kirbuchi - tak, dokładnie. Obowiązują te same kompromisy. –

+0

Nice! bardzo dziękuję – kirbuchi