从服务器端在客户端获取变量(express.js,node.js)

owl*_*owl 3 javascript node.js express

服务器端:

app.get('/auth', function(req, res) {
    res.render('auth.jade', {
        variable: true
    });
});
Run Code Online (Sandbox Code Playgroud)

如何从服务器端在客户端获取变量“变量”?

我试过了:

alert(variable);
Run Code Online (Sandbox Code Playgroud)

sha*_*zhu 5

您无法直接在浏览器窗口的客户端javascript中的节点应用程序中获取服务器端变量。尽管它们支持相同的编程语言,但它们只是两个不同的运行时。

您的问题是关于客户端javascript如何通信服务器端资源,例如/auth。选项是:

在jade模板呈现的网页上的script标签中提供数据。例如:

html(lang="en")
  head
    title= pageTitle
  script(type='text/javascript').
    var generatedData = {variable:true}
body
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用alert(generatedData)它来获取它。请注意,数据必须是可序列化的数据,没有任何功能或参考。

通常人们使用JSON,这意味着您需要编写一些客户端代码才能与服务器端资源进行通信。就像在客户端使用jQuery:

$.get('/auth').done(function(data){ alert(data); });
Run Code Online (Sandbox Code Playgroud)

使用服务器端代码,它通过快速响应对象自动以JSON格式发送数据:

app.get('/auth', function(req, res) {
    res.send({
        variable: true
    });
});
Run Code Online (Sandbox Code Playgroud)