使用 ejs 嵌入用户对象

Embedding user object using ejs

本文关键字:用户 对象 ejs 使用      更新时间:2023-09-26

我目前正在使用 passport 模块在 Node.js 中实现 Web 应用程序的身份验证。我在呈现索引页时将用户对象返回给用户

app.route('/').get(function(req, res) {
    res.render('index', {
        isAuthenticated: req.isAuthenticated(),
        user: req.user //User Object provided by passport
    });
});

我正在尝试使用 ejs 将用户对象嵌入到 DOM 中:

<!--Embedding The User Object-->
<script type="text/javascript">
    var user = <%= user%>;
</script>

但是存在一些编码问题。这是我在浏览器中查看源代码时的输出:

<!--Embedding The User Object-->
    <script type="text/javascript">
        var user = { email: &#39;test@gmail.com&#39;,
  roles: [ &#39;user&#39; ],
  created: Thu Feb 04 2016 19:13:16 GMT+1100 (AEDT),
  __v: 0,
  _id: 56b3081cb406f8156cd3798a };
</script>

我正在遵循一个使用 swig 的示例,其中他们处理编码的方式如下:

<!--Embedding The User Object-->
<script type="text/javascript">
    var user = {{ user | json | safe }};
</script> 

我对 swig 不太熟悉,所以我认为它是某种流水线。我想知道如何使用 ejs 来做到这一点?

在 Swig 中,{{ user | json | safe }} 表示:

user返回此 JavaScript 对象的字符串表示形式,并返回此字符串,强制它不自动转义。

在翡翠中,

!{JSON.stringify(user)}逃脱

#{JSON.stringify(user)}逃脱了

在 Ejs 中,

<%- JSON.stringify(user) %>逃脱

<%= JSON.stringify(user) %>逃脱了

已解决!EJS有一个html转义功能,就像

<%- user %>

而不是

<%= user %>