在layout.js中呈现两个ejb页面



我想了解express-ejs-layouts的工作原理。基本上,我对layout.js的理解是,它是用来渲染js页面,有一些共同的内容,如javascript。我做了两个不同的ejs模板,homepage.jsdashboard.js,内容分别是<h1 id="heading1"></h1><h1 id="heading"></h1>

以下是layout.js代码:

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="css/style.css" type="text/css" />
</head>
<body>
<%- body %>
<script type="text/javascript">
document.getElementById("heading").innerHTML = "Hello, There!!";
document.getElementById("heading1").innerHTML = "Homepage";
</script>
</body>
</html>

我把它渲染成两个模板,像这样:

app.get('/',(req, res)=>{
res.render('dashboard');
})
app.get('/homepage',(req, res)=>{
res.render('homepage');
})

当我点击/时,我看到h1标签,但是当我点击/homepage时,我看不到任何东西,在控制台上,我看到一个错误:layout.js中的Uncaught TypeError: Cannot set properties of null (setting 'innerHTML')。基本上,在渲染主页时,找不到仪表板的h1标签。

我是否以正确的方式实现布局?还是我的逻辑出了什么问题?请帮我找出解决这个问题的方法。

谢谢!

我是否以正确的方式实现布局?

布局文件应该包含公共元素到所有页面

您有两个客户端JavaScript,每一个都是特定的到另一个页面

dashboard.ejshomepage.ejs应该知道它们自己的标题,因为这是这些文件特有的信息。

最新更新