簡體   English   中英

bootstrappedUser-將Jade或EJS轉換為HTML

[英]bootstrappedUser - Jade or EJS to HTML

我一直在做一些關於Mean Stack的指南,現在我陷入了困境。 按照本指南,我創建了一個簡單的身份驗證,可以在其中使用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分配給我,也未定義bootstrappedUser。

我想將此文件包含在主布局中(index.html)。 問題是我沒有將Jade用作模板引擎,而是使用純HTML,而且我不知道如何在此將代碼轉換為index.html中的簡單HTML。

可以看出,此語句僅在用戶單擊登錄按鈕時才初始化。 有沒有人有任何想法或解決方案,如何用純HTML編寫上述代碼。

我瀏覽了StackOverflow,發現了幾乎類似的問題,但還不夠相似。 在此先感謝Aleksandar

bootstrappedUser是服務器端代碼傳遞給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;
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM