如何从快速后端向ejs前端发送数据?

时间:2017-12-09 15:31:20

标签: node.js express ejs

我正在尝试一个Tutorials网站,因为我的一些页面需要根据他们登陆的路线发送教程对象,视频对象,用户对象。那么,即使我在前端不需要它们,是否有必要发送空对象?我在脚本标记中提取这些后端对象并将其分配给window对象以在angular客户端中使用。

以下是一些示例代码。

// layout.ejs   common to all front end views
<script>
window.user = <%- typeof user !== 'undefined'? JSON.stringify(user) : null %>
</script>

Backend发送此类代码:

res.render('/partials/index', {
    title: 'Title'
});

但是当我不将user作为null发送时,它会抛出ReferenceError:user not defined。为什么会这样?我正在检查脚本标记,如果它是未定义的,我使用null。这是错的吗?

如果我们需要从后端显式发送null,那么即使我不需要它也每次都发送null似乎很尴尬。什么是正确的方法呢?

2 个答案:

答案 0 :(得分:0)

这是因为三元运算符检查两个部分(包括user的部分),即使它没有被评估,因为条件是错误的。

你要么必须包含这个:

let user = user || null;

或者在渲染中发送显式null。

答案 1 :(得分:-1)

抱歉,但我找到了答案。我们可以使用它来设置它。是的,它使用null作为字符串。这似乎有所不同。

window.user = <%- typeof user === 'undefined' ? 'null': JSON.stringify(user) %>

我希望它可以帮助别人。