Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将变量作为全局变量传递给jade模板_Javascript_Node.js_Express_Pug - Fatal编程技术网

Javascript 如何将变量作为全局变量传递给jade模板

Javascript 如何将变量作为全局变量传递给jade模板,javascript,node.js,express,pug,Javascript,Node.js,Express,Pug,我希望能够将一个全局对象传递给jade模板,以后我将使用该对象进行任何操作 让我们说: app.get("/", function(req, res){ var options = { chGlobal : {// this is the object i want to be a global "property1" : 1, "property2" : 2, "property3" : 3,

我希望能够将一个全局对象传递给jade模板,以后我将使用该对象进行任何操作

让我们说:

app.get("/", function(req, res){

    var options = {
        chGlobal : {// this is the object i want to be a global
            "property1" : 1,
            "property2" : 2,
            "property3" : 3,
        }
    };

    jade.renderFile(__dirname +'/tpl/main.jade', options, function (err, html) {
        console.log(err, html);
        if (err)
        {
            throw err
        }
        else
        {
            res.send(html);
        }
    });
});
我希望能够在加载的其他脚本中使用“chGlobal”。就好像chGlobal是在全局范围内定义的一样


感谢您通过express使用jade作为查看引擎,如下所示:

app.set('views', __dirname); // this will be where your views are located.
app.set('view engine', 'jade');
app.get("/", registerGlobals, function(req, res) {
您可以使用res.locals.variable指定局部变量

(示例)

然后在Jade中,您可以访问选项变量

您可以编写一个中间件来自动附加全局变量,如下所示:

app.set('views', __dirname); // this will be where your views are located.
app.set('view engine', 'jade');
app.get("/", registerGlobals, function(req, res) {
那么中间件的功能将是:

function registerGlobals(req, res, next) {
    res.locals.options = {
        chGlobal : {// this is the object i want to be a global
            "property1" : 1,
            "property2" : 2,
            "property3" : 3,
        }
    };

    next();
}

有关如何使用jade的更多教程,请参见此处:

如果您通过express将jade用作视图引擎,如下所示:

app.set('views', __dirname); // this will be where your views are located.
app.set('view engine', 'jade');
app.get("/", registerGlobals, function(req, res) {
您可以使用res.locals.variable指定局部变量

(示例)

然后在Jade中,您可以访问选项变量

您可以编写一个中间件来自动附加全局变量,如下所示:

app.set('views', __dirname); // this will be where your views are located.
app.set('view engine', 'jade');
app.get("/", registerGlobals, function(req, res) {
那么中间件的功能将是:

function registerGlobals(req, res, next) {
    res.locals.options = {
        chGlobal : {// this is the object i want to be a global
            "property1" : 1,
            "property2" : 2,
            "property3" : 3,
        }
    };

    next();
}

更多关于如何使用jade的教程,请点击此处:

是否有需要手动编译jade的原因?手动编译jade是什么意思?我只是从jade开始,这是我知道如何使用它的唯一方法。你想手动编译jade有什么原因吗?手动编译jade是什么意思?我只是从jade开始,这是我知道如何使用它的唯一方法。是的,我确实这样使用它,但我不需要局部变量,我需要全局变量。假设我有一个模板-在该模板中,我加载了另一个JS头,其中包含该页面的所有功能,我希望能够使用从该文件中的服务器“加载”的变量。我有点困惑,如果您在jade中使用include语句(指另一个模板),您可以访问变量。全局变量,您希望它们可以在整个jade模板中访问,对吗?对于css,不要使用include-use
script(src=“/js/utilFunctions.js”type=“text/javascript”)
link(href=“/css/style.css”rel=“stylesheet”type=“text/css”)
,我希望能够使用utilFunction.js中的变量如果要在客户端脚本上公开变量,必须手动进行(显式声明var options='#{options}'))或者创建一个名为/js/utilFunctions.js的端点,这是一个显式的express端点,用于呈现js文件。是的,没有解析,效果很好,我将它放在了正确的位置:-)谢谢你坚持我。是的,我确实这样使用它,但我不需要局部变量,我需要全局变量。假设我有一个模板-在该模板中,我加载了另一个JS头,其中包含该页面的所有功能,我希望能够使用从该文件中的服务器“加载”的变量。我有点困惑,如果您在jade中使用include语句(指另一个模板),您可以访问变量。全局变量,您希望它们可以在整个jade模板中访问,对吗?对于css,不要使用include-use
script(src=“/js/utilFunctions.js”type=“text/javascript”)
link(href=“/css/style.css”rel=“stylesheet”type=“text/css”)
,我希望能够使用utilFunction.js中的变量如果要在客户端脚本上公开变量,必须手动进行(显式声明var options='#{options}'))或者创建一个名为/js/utilFunctions.js的端点,这是一个显式的express端点,用于呈现js文件。是的,没有解析,效果很好。我将它放在了正确的位置:-)感谢您坚持我的观点。