Javascript Jade模板如何使用客户端全局变量?

Javascript Jade模板如何使用客户端全局变量?,javascript,pug,Javascript,Pug,假设我打开了一个浏览器,并且在JavaScript中声明了一个全局变量 window.myGlobalVar = 'Hello!'; .foo= myGobalVar 然后,我编译了一个jade模板,用于使用该变量的客户端渲染 window.myGlobalVar = 'Hello!'; .foo= myGobalVar 我是这样编译的: jade.compile('.foo= myGobalVar', { client: true, compileDebug: false })

假设我打开了一个浏览器,并且在JavaScript中声明了一个全局变量

window.myGlobalVar = 'Hello!';
.foo= myGobalVar
然后,我编译了一个jade模板,用于使用该变量的客户端渲染

window.myGlobalVar = 'Hello!';
.foo= myGobalVar
我是这样编译的:

jade.compile('.foo= myGobalVar', {
  client: true,
  compileDebug: false
}).toString()
这将生成此模板函数:

function anonymous(locals) {
    var buf = [];
    var locals_ = (locals || {}),
        myGobalVar = locals_.myGobalVar;
    jade.indent = [];
    buf.push("\n<div class=\"foo\">"
             + (jade.escape(null == (jade.interp = myGobalVar) ? "" : jade.interp))
             + "</div>");;
    return buf.join("");
}

但是该死的,那会让我觉得脏吗。。。当然有更好的方法吗?

您可以将要在jade模板中使用的全局变量的名称,以及options对象传递给compile函数。参见jade api文档:


查看此小提琴以查看其实际操作:

您的小提琴没有翡翠文件没有翡翠文件!玉码就是字符串。请再看一遍小提琴,重新考虑一下你的否决票。但与导入的momentjs库的链接已断开。我更新了fiddler链接(只是让大家注意
myGobalVar
vs
myGlobalVar
jade.compile(template, { globals: ['globalone','globaltwo']})