这可能是一个愚蠢的问题,但在Express中,当您在res.render(view, {variable: variable})
中定义局部变量时,它们如何在前端访问?他们在哪里?当我尝试访问通过此方法使用console.log(variable)
定义的变量时,Firebug会抛出错误,指出variable
未定义。我也试过console.log(window.variable)
,结果相似。那么这些变量在哪里保存?
此外,res.locals
个变量是保存在同一个地方,还是只是被抛出?这些变量可供swig
和jade
等模板引擎访问,但我也无法使用console.log()
找到它们。
答案 0 :(得分:4)
这些变量不会自动传递给客户端代码;正如您所说,它们可用于视图模板中的代码。同样,在res.locals
(或app.locals
中定义的具有相同API的变量)将在任何视图中作为局部变量提供。
如果您希望将它们提供给客户端代码,则必须以客户端JavaScript可访问的形式手动将它们作为响应的一部分发送。例如,您可以将其写入<script>
标记,如下所示:Accessing Express.js local variables in client side JavaScript。
答案 1 :(得分:2)
这些变量仅用于在服务器端呈现视图。显然,其中一些值会进入服务器端响应的HTML,但如果要将这些值序列化为JSON,则可能需要查看sharify等模块,嵌入<script>
在HTML中标记,并在浏览器的javascript代码中访问它们。