【问题标题】:bootstrappedUser - Jade or EJS to HTMLbootstrappedUser - Jade 或 EJS 到 HTML
【发布时间】:2014-12-16 03:01:38
【问题描述】:

我一直在做一些关于平均堆栈的指南,但我遇到了一个我目前陷入困境的地步。 按照本指南,我创建了一个简单的身份验证,可以在其中使用 Passport JS 登录。无论如何,每次页面刷新时,身份验证都会重新启动(客户端不再识别它)。

由于这应该在指南中发生并且我们即将修复它,因此指南说以下内容。 1. 创建一个 Jade 文件并插入:

    if !!bootstrappedUser
  script.
    window.bootstrappedUserObject = !{JSON.stringify(bootstrappedUser)}

我已经在我的 html 文件中尝试过,但它不起作用:

  <script type='text/javascript'>

          if (bootstrappedUser != "undefined" ){
          window.bootstrappedUserObject = JSON.stringify(bootstrappedUser);
           }

    </script>

得到错误:Uncaught ReferenceError: bootstrappedUser is not defined 即使我已经在我的后端 js 文件中创建了变量并将 req.user 分配给它。

我想这个文件包含在我的主布局中(index.html)。问题是我没有使用 Jade 作为模板引擎,而是使用纯 HTML,而且我不知道如何将那里的代码转换为我的 index.html 中的简单 HTML。

这里的这条语句似乎只有在用户点击登录按钮时才会初始化。有没有人有任何想法或解决方案如何用纯 HTML 编写上述代码。

我浏览了 StackOverflow,发现了几乎相似的问题,但还不够相似。 提前致谢, 亚历山大

【问题讨论】:

  • bootstrappedUser 是由服务器端代码传递给 Jade 编译器的变量,Jade 编译器在编译时将其注入 HTML。如果您打算自己编写 HTML,则不能从服务器端代码中注入变量,显然因为 HTML 只是一个静态标记。您可能必须自己通过 ajax 或其他方式在客户端从服务器获取该变量。
  • 比方说通过 Angular 控制器?

标签: javascript html node.js express pug


【解决方案1】:

bootstrappedUser 是由服务器端代码传递给 Jade 编译器的变量,Jade 编译器在编译时将其注入 HTML。如果您打算自己编写 HTML,则不能从服务器端代码中注入变量,显然因为 HTML 只是一个静态标记。您可能必须自己通过 ajax 或其他方式在客户端从服务器获取该变量。

比方说通过 Angular 控制器?

你可以先在服务器上定义一个路由来提供你想要的变量

app.get('/bootstrappedUser', function(req, res){
    if(req.user)
        res.json(req.user);
    else
        res.status(401).end();
});

然后在客户端 Angular 上,您可以执行 http 请求并获取该变量

$http.get('/bootstrappedUser')
    .success(function(data, status, headers, config) {
        $scope.bootstrappedUser = data;
    });

【讨论】:

    猜你喜欢
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    • 2011-10-26
    • 2012-04-13
    • 1970-01-01
    • 2017-01-11
    • 2012-11-24
    相关资源
    最近更新 更多