Node.js通过快速渲染将parameter passing给客户端

我正在使用Node.js,并且遇到与客户端进行通信的问题。

我定义了Express:

var express = require("express"); var app = express();` 

当我尝试在请求页面时向客户端传递参数时,该variables不包含任何数据,例如:

 app.get("/", function(req, res){ res.render("index", { name: "example" }); }); 

在索引页上,当我使用控制台打印variables( name )时,它返回""

更多信息: http : //expressjs.com/api.html#app.render

我错过了什么或做错了什么?

发送给渲染函数的variablesname仅在呈现页面时可用,在发送给客户端之后,它不可访问。 您必须在渲染阶段的视图中使用它。

由于您使用的是句柄,因此您可以像这样在页面中显示它,例如:

 <h1>{{ name }}</h1> 

如果你想在JavaScript中使用这些数据,请在script标签中使用它:

 <script> var name = "{{ name }}"; console.log(name); </script> 

你基本上是通过expression来呈现你的索引页面,并为namevariables提供一个值,但是这并不一定使你的客户端JavaScript中的varvariables可用。 您需要编辑索引模板以在页面中显示namevariables。 语法根据您使用的模板引擎(jade,ejs,dustjs)而有所不同。

另一个解决scheme是在客户端页面的javascript中使用ajax调用,并在服务器上使用res.json来发送数据。 然后,您可以在控制台中评估name 。 例如使用jQuery:

index.html的:

 $.get( "/getvar", function( data ) { name = data.name; }); 

server.js:

 app.get("/getvar", function(req, res){ res.json({ name: "example" }); }); 

如果你想通过javascript在客户端获取参数,你应该这样做<script>var data = data</script> ,否则variables不可用

如果你使用翡翠,它会是这样的:

 script(type='text/javascript'). var name = !{name}