Node.js结合Express和EJS可实现SSR,通过服务端渲染提升首屏速度与SEO;具体步骤包括:搭建Express框架,配置EJS模板引擎,定义路由并获取数据,使用res.render()渲染带数据的HTML页面,编写EJS模板输出动态内容,并扩展静态资源服务、错误处理、缓存、SEO优化及日志记录等功能以完善SSR体系。

要实现一套完整的后端渲染(Server-Side Rendering, SSR)方案,Node.js 是一个非常合适的选择。它能结合模板引擎、路由控制和数据获取,在服务端动态生成 HTML 返回给客户端,提升首屏加载速度和 SEO 效果。以下是具体实现思路和步骤。
选择合适的框架与模板引擎
Node.js 本身是运行环境,需要搭配 Web 框架来组织代码。最常用的是 Express,它轻量且灵活,适合构建 SSR 应用。
模板引擎负责将数据注入 HTML 模板并输出最终页面。常见的选项包括:
- EJS:语法简单,类似 HTML 嵌入 JavaScript
- Pug(原 Jade):结构清晰,缩进敏感
- Handlebars:逻辑少,适合内容驱动型页面
以 EJS 为例,安装 Express 和 EJS:
npm install express ejs
配置路由与数据获取
在 Express 中定义路由,处理请求并在服务端获取数据(如调用 API 或查询数据库),然后渲染模板。
示例代码:
const express = require('express');
const app = express();
// 设置视图引擎
app.set('view engine', 'ejs');
app.set('views', './views');
// 模拟数据获取
function fetchUserData(id) {
return {
id,
name: '张三',
email: 'zhangsan@example.com'
};
}
// 路由:渲染用户页面
app.get('/user/:id', (req, res) => {
const user = fetchUserData(req.params.id);
res.render('user', { user }); // 渲染 user.ejs,传入数据
});
app.listen(3000, () => {
console.log('SSR 服务运行在 http://localhost:3000');
});
其中 res.render() 会调用 EJS 引擎,将数据合并到模板中生成完整 HTML。
编写模板文件
在 views/user.ejs 中使用嵌入式 JS 输出数据:
bee餐饮点餐外卖小程序是针对餐饮行业推出的一套完整的餐饮解决方案,实现了用户在线点餐下单、外卖、叫号排队、支付、配送等功能,完美的使餐饮行业更高效便捷!功能演示:1、桌号管理登录后台,左侧菜单 “桌号管理”,添加并管理你的桌号信息,添加以后在列表你将可以看到 ID 和 密钥,这两个数据用来生成桌子的二维码2、生成桌子二维码例如上面的ID为 308,密钥为 d3PiIY,那么现在去左侧菜单微信设置
用户信息
姓名: <%= user.name %>
邮箱: <%= user.email %>
当访问 /user/123 时,服务器返回已填充数据的 HTML,浏览器直接显示,无需额外请求数据。
优化与扩展功能
一个完整的 SSR 方案还需考虑以下方面:
-
静态资源服务:使用
express.static提供 CSS、JS、图片等文件 - 错误处理:捕获异步异常,渲染 404 或 500 页面
- 缓存策略:对频繁访问的页面做内存或 Redis 缓存,减少重复计算
- SEO 支持:在模板中动态设置 title、meta 标签
- 日志记录:集成 morgan 等中间件监控请求
例如添加静态资源支持:
app.use(express.static('public')); // public/css/style.css 可通过 /css/style.css 访问
基本上就这些。Node.js 配合 Express 和模板引擎,可以快速搭建出稳定高效的后端渲染系统,适用于内容型网站、后台管理页面或对 SEO 有要求的应用场景。不复杂但容易忽略细节,比如路径配置和错误边界处理,需在实际项目中不断完善。









