Nodejs中bootstrap layout.ejs 是如何被调用的?
Nodejs中bootstrap layout.ejs 是如何被调用的?
再看NodeJs中文开发文档中,有一个博客的demo,前端设计应用到bootstrap ,疑问的是index.ejs是如何关联layout.ejs?
3 回复
请看这篇 ejs里面怎么使用layout呢?
在Node.js应用中使用EJS模板引擎时,layout.ejs
和 index.ejs
文件之间的关系是通过布局继承来实现的。布局文件(如layout.ejs
)定义了页面的基本结构,而具体内容页面(如index.ejs
)则继承了这个布局,并填充具体的内容。
示例代码
1. 安装 EJS 模块
确保你已经在项目中安装了EJS模块:
npm install ejs --save
2. 创建 layout.ejs
这是一个基本的Bootstrap布局文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%- title %></title>
<!-- 引入 Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item active">
<a class="nav-link" href="/">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="/about">About</a>
</li>
</ul>
</div>
</nav>
<div class="container mt-3">
<%- body %>
</div>
<!-- 引入 Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>
3. 创建 index.ejs
这是具体的页面内容文件,它将继承上述布局文件:
<% layout('layout') %>
<h1>Welcome to the Home Page</h1>
<p>This is the home page of your blog.</p>
4. 设置 EJS 作为视图引擎
在你的Node.js应用中,需要设置EJS作为视图引擎。例如,在Express应用中,你可以这样做:
const express = require('express');
const app = express();
// 设置 EJS 为视图引擎
app.set('view engine', 'ejs');
app.get('/', (req, res) => {
res.render('index', { title: 'Home Page' });
});
app.listen(3000, () => console.log('Server running on port 3000'));
这样,当你访问首页时,index.ejs
将继承并渲染 layout.ejs
中定义的布局,同时填充自己的内容。
解释
<%- body %>
:在layout.ejs
中,这一行用于插入继承它的子视图的内容。<%- title %>
:同样地,这一行用于插入从子视图传递过来的数据。<% layout('layout') %>
:在子视图中,这一行声明了该视图继承自哪个布局文件。
以上步骤展示了如何在Node.js应用中使用EJS模板引擎来组织和渲染页面,使得布局与内容分离。