Jinja 是一个现代的、设计友好的 Python 模板语言,它具有灵活的语法和强大的功能。虽然它主要用于 Python 后端框架 Flask 和 Django 中,但也可以在前端 JavaScript 文件中使用,尤其是在前后端分离的架构中。
Jinja 模板语言:
{{ ... }}
语法插入变量。if
条件语句、for
循环等。|safe
、|capitalize
等。extends
关键字继承和扩展。假设你有一个 Flask 应用,并且想要在前端 JS 文件中使用 Jinja 变量。
后端 (Flask):
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
user_name = "Alice"
return render_template('index.html', user_name=user_name)
前端 (HTML + JS):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Jinja in JS</title>
</head>
<body>
<script type="text/javascript">
// 直接在 JS 中使用 Jinja 变量
var userName = "{{ user_name }}";
console.log(userName); // 输出: Alice
</script>
</body>
</html>
问题:在 JS 文件中无法正确解析 Jinja 变量。
原因:
解决方法:
<script>
标签内使用 Jinja 变量。示例:
<!-- index.html -->
<script>
window.user_name = "{{ user_name }}";
</script>
<script src="/static/js/app.js"></script>
// static/js/app.js
console.log(window.user_name); // 输出: Alice
通过这种方式,可以在保持 JS 文件独立性的同时,仍然能够利用 Jinja 提供的动态数据。
总之,虽然 Jinja 主要用于 Python 后端,但通过一些技巧,也可以在前端 JS 文件中有效地使用它来增强应用的灵活性和动态性。
领取专属 10元无门槛券
手把手带您无忧上云