Node.js 结合 EJS(Embedded JavaScript templates)进行服务器端渲染是一种常见的做法,它允许你在服务器上动态生成 HTML 内容,并且可以嵌入 JavaScript 代码来处理数据和逻辑。
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,它允许在服务器端运行 JavaScript 代码。
EJS 是一个简单的模板引擎,它允许你在 HTML 文件中嵌入 JavaScript 代码片段,用于动态生成内容。
EJS 模板主要有以下几种类型:
<% code %>
- 执行 JavaScript 代码,但不输出结果。<%= code %>
- 执行 JavaScript 代码并输出结果。<%# code %>
- 注释,不会被渲染。以下是一个简单的 Node.js + EJS 示例:
// 引入必要的模块
const express = require('express');
const app = express();
// 设置模板引擎
app.set('view engine', 'ejs');
app.set('views', __dirname + '/views');
// 定义路由
app.get('/', (req, res) => {
const data = { title: 'Hello EJS', message: 'Welcome to Node.js with EJS!' };
res.render('index', data);
});
// 启动服务器
app.listen(3000, () => {
console.log('Server is running on http://localhost:3000');
});
在 views
文件夹中创建一个 index.ejs
文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><%= title %></title>
</head>
<body>
<h1><%= message %></h1>
</body>
</html>
问题:EJS 模板渲染时出现 undefined
错误。
原因:通常是因为传递给模板的数据对象中缺少某个属性,或者属性名拼写错误。
解决方法:
res.render
方法的数据对象,确保所有需要的属性都已定义。例如,如果 data
对象中没有 title
属性,EJS 模板中的 <%= title %>
将会抛出 undefined
错误。
Node.js 结合 EJS 可以有效地进行服务器端渲染,提高应用性能和 SEO 效果。通过合理组织代码和使用 EJS 的不同标签,可以灵活地控制页面内容的生成。在实际开发中,需要注意数据传递的正确性和模板变量的命名一致性,以避免运行时错误。
领取专属 10元无门槛券
手把手带您无忧上云