You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Pug模板中的服务器变量传递至外部JS文件?

把Pug中的服务器变量传递到外部JS文件的几种方法

针对你的需求,这里有几个实用的实现方式,解决你当前代码里因执行顺序导致变量无法被外部JS读取的问题:

方法一:调整脚本加载顺序(最直接)

浏览器会按脚本出现的顺序执行代码,所以先定义全局变量,再加载外部JS,这样外部JS就能直接访问这个变量。

修改后的Pug代码:

html 
    head 

    body 
        // 先定义全局变量,把服务器变量赋值过来
        script.
            var serverVariable = "#{variableX}"
        // 再加载外部JS文件
        script(type='text/javascript' src='../api/public/javascript/dashboard.js')

在dashboard.js里直接使用这个全局变量:

// 直接访问全局变量
console.log(serverVariable);
// 后续业务逻辑里也能正常使用

方法二:用DOM自定义属性存储(更优雅,避免全局变量污染)

把服务器变量存在DOM元素的自定义data-*属性里,外部JS通过DOM API读取,不污染全局作用域。

Pug代码:

html 
    head 
        // 可以正常在head里加载外部JS
        script(type='text/javascript' src='../api/public/javascript/dashboard.js')
    // 把变量存在body的自定义属性中
    body(data-server-variable="#{variableX}")

dashboard.js里的读取逻辑:

// 通过dataset读取自定义属性,自动转驼峰命名
const variableX = document.body.dataset.serverVariable;
// 或者用getAttribute方法
// const variableX = document.body.getAttribute('data-server-variable');
console.log(variableX);

方法三:通过初始化函数传递(适合复杂JS逻辑)

如果你的外部JS有明确的初始化流程,可以定义一个初始化函数,在Pug中调用时直接传入服务器变量,这种方式可控性更强。

Pug代码:

html 
    head 
        script(type='text/javascript' src='../api/public/javascript/dashboard.js')
    body 
        script.
            // 调用外部JS的初始化函数,把变量传进去
            initDashboard("#{variableX}");

dashboard.js里的实现:

// 定义初始化函数,接收传入的变量
function initDashboard(variable) {
    console.log('从服务器拿到的变量:', variable);
    // 在这里编写依赖该变量的业务逻辑
}

内容的提问来源于stack exchange,提问作者Yuri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 19:31:23