【问题标题】:Embedding user object using ejs使用 ejs 嵌入用户对象
【发布时间】:2016-05-13 18:14:18
【问题描述】:

我目前正在使用护照模块在 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 来做到这一点?

【问题讨论】:

    标签: javascript node.js passport.js ejs swig-template


    【解决方案1】:

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

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

    在翡翠中,

    !{JSON.stringify(user)} 未转义

    #{JSON.stringify(user)} 转义

    在 Ejs 中,

    &lt;%- JSON.stringify(user) %&gt; 未转义

    &lt;%= JSON.stringify(user) %&gt; 转义

    【讨论】:

      【解决方案2】:

      已解决! EJS有一个html转义功能,很简单

      <%- user %>
      

      而不是

      <%= user %>
      

      【讨论】:

      • 您可能正在寻找 &lt;%- JSON.stringify(user) %&gt;,但得到的结果与您发布的 swig 相同。
      • 是的,更好!修复了解析日期对象
      猜你喜欢
      • 1970-01-01
      • 2018-08-13
      • 2017-10-30
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      • 2021-04-15
      • 1970-01-01
      相关资源
      最近更新 更多