我想了解express-ejs-layouts
的工作原理。基本上,我对layout.js
的理解是,它是用来渲染js页面,有一些共同的内容,如javascript。我做了两个不同的ejs模板,homepage.js
和dashboard.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.ejs
和homepage.ejs
应该知道它们自己的标题,因为这是这些文件特有的信息。