jinja 变量无法直接在外部 js 文件中渲染,需通过内联 `
在 Flask、Django(Jinja2 后端)等模板驱动的 Web 应用中,开发者常需将服务端动态数据(如用户 ID、配置项、API 路径)传递给前端 JavaScript 逻辑。虽然 {{ var }} 在内联
✅ 正确实践:分层注入 + 作用域桥接
核心思路是:在 HTML 模板中,先用内联 。外部 JS 可直接访问该变量,无需额外通信机制。
示例代码如下:
Hello, {{ user.name }}!
// static/js/app.js
console.log('User ID:', APP_CONFIG.userId); // ✅ 正常输出
console.log('API endpoint:', APP_CONFIG.apiUrl); // ✅ 字符串自动加引号
console.log('Features:', APP_CONFIG.features); // ✅ 支持数组、对象、布尔值、null⚠️ 重要注意事项:
? 进阶提示:对于大型应用,可结合 data-*
属性 + document.currentScript 或自定义事件进一步解耦,但对绝大多数场景,上述“预定义全局对象”方案已足够简洁、安全且可扩展。