如何在JavaScript中包含ejs局部变量?

问题描述 投票:1回答:1

我正在编写一些代码来检查用户是否已登录。如果用户已登录,则“我的用户”部分应不同于该用户未登录时的部分。

因此,当已登录用户进入“我的用户”页面时,if语句将检查该用户是否已登录,如果用户已登录,则该语句应包含与已登录用户相对应的部分内容。处于状态。如果用户尚未登录,则if语句应包括其他部分。

我如何使用JS在div中包括局部变量?

我尝试使用parentElement.innerHTML = "<%= include userNotLoggedIn.ejs %>时不走运,并且还尝试了使用检查工具在html文件在浏览器中运行时手动编辑html文件,但无法获取模板。

似乎在渲染了主要的html文件之后,我无法包含局部文件。是这样吗

这是我的代码:

 if(document.getElementById("loginState").innerHTML == " Logg inn") {        
                //Append the correct html template if the user is not logged in
            var includeStr = "<%= include notLoggedIn.ejs %>";
                cont.innerHTML = includeStr;
        } else {
                //Append the desired html template if the user is logged in
            var includeStr = "<%= include userLoggedInMenu.ejs %>";
                cont.innerHTML = includeStr;
        }

其中cont是应向其中添加模板的容器

我希望将部分对象添加到容器元素,并且我的notLoggedIn.ejs文件显示在html页面中。但是,这不是结果。

请检查以下图片:(我无法将图片直接发布到帖子中)

https://imgur.com/a/ISDFIPp

javascript html node.js express ejs
1个回答
0
投票

ejs在服务器端呈现,并作为HTML发送回客户端。我不认为您可以在客户端添加ejs。

实现您正在尝试的一种可行方法是设置一个名为currentUser的变量,并将其传递给ejs文件,然后在该文件中设置如下条件以有条件地显示内容。

// Making the logged in user available
app.use(function (req, res, next) {
res.locals.currentUser = req.user;
next();
});
<% if(!currentUser){ %>
// If the user is not logged in
<% } else { %>
// If the user is logged in
<% } %>
© www.soinside.com 2019 - 2024. All rights reserved.