jinja2 模板变量无法直接在外部 js 文件中使用,但可通过内联 `
在 Flask、Django(启用 Jinja2)等支持 Jinja2 的 Web 框架中,模板引擎仅处理 .html(或 .j2)文件中的 {{ }} 和 {% %} 语法;而外部 .js 文件由浏览器直接加载,不经过服务端渲染,因此其中的 {{ var }} 不会被解析,直接导致语法错误或空值。
✅ 正确做法:在 HTML 模板中,先用内联 ,确保变量在外部脚本执行前已挂载到全局作用域(如 window 或独立常量):
Hello, {{ user.name }}!
⚠️ 关键注意事项:
// externalJs.js
if (typeof APP_CONFIG !== 'undefined') {
console.log('User ID:', APP_CONFIG.userId);
} else {
console.error('APP_CONFIG not provided by template');
}? 进阶建议:对复杂场景(如多页面共享配置),可封装为自定义 Jinja 宏或使用 data-* 属性 + document.currentScript 动态提取,但上述