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来呈现你的索引页面,并为name
variables提供一个值,但是这并不一定使你的客户端JavaScript中的varvariables可用。 您需要编辑索引模板以在页面中显示name
variables。 语法根据您使用的模板引擎(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}