Wenn ich über Jinja2 JavaScript-Code generieren möchte und nicht nur HTML, bleibe ich dabei, den JS-Code inline zu halten, oder gibt es eine Möglichkeit für mich, auf das Skript zu verweisen?Wie kann ich eine JS-Vorlage aus einer gerenderten HTML-Vorlage rendern?
Konkret:
app.py
from flask import Flask, render_template
app = Flask(__name__)
app.config['DEBUG'] = True
@app.route('/')
def index():
return render_template('index.html', name='Sebastian', color='pink')
if __name__ == '__main__':
app.run()
index.html
<!DOCTYPE html>
<html>
<head>
<meta content="utf-8" http-equiv="encoding">
<script>
function myEnterFunction() {
element = document.getElementById("demo");
element.style.backgroundColor = "{{ color }}";
}
</script>
</head>
<body>
<p>Hello {{ name }}</p>
<div onmouseenter="myEnterFunction()">
<p>onmouseenter:
<span id="demo">Mouse over me!</span>
</p>
</div>
</body>
</html>
Dies funktioniert gut, wenn der JavaScript-Code ist inlined, aber was, wenn wir würden gerne sauber bleiben und eine separate Datei referenzieren?
<head>
<meta content="utf-8" http-equiv="encoding">
<script src="code.js"></script>
</head>
?
Möglicherweise kann dies durch src="code.js"
ersetzt mit
{% render_template('code.js', color=color) %}
getan werden kann, sehen Sie, wie Sie eine JS-Vorlage zu machen, während Sie eine HTML-Vorlage rendern?
Mögliche Duplikate von [Verwenden Sie Jinja2 Vorlage-Engine in externen Javascript-Datei] (http://stackoverflow.com/questions/21956500/use-jinja2-template-engine-in-external-javascript-file) –
Sie haben Recht . Die Frage ist ähnlich. Aber die bevorzugte Antwort dort ist nicht geeignet, weil die Frage übermäßig einfach ist. Auch hier ist der Code zur besseren Übersichtlichkeit vereinfacht. Der Grund, warum die alternative Antwort dort "* ist wahrscheinlich keine sehr gute Idee *" ist nicht angegeben (noch klar für mich). Die Antwort hier ist genau richtig. – Calaf