VSCode 无法直接运行 EJS,必须通过 Node.js 调用 ejs.render() 或 ejs.renderFile() 才能将 .ejs 文件渲染为 HTML;Live Server 仅支持静态文件,不解析 EJS,故打开 .ejs 会显示源码或下载;正确做法是用 Express + EJS 搭建本地服务,配合 nodemon 实现热重载预览。

VSCode 本身不运行 EJS,它只是编辑器;真正让 .ejs 文件变成 HTML 的,必须是 Node.js 运行时调用 ejs.render() 或 ejs.renderFile()。所谓“快速开发静态模板”,本质是搭建一个轻量、可热重载、能即时预览的本地服务环境——不是靠插件点一下就渲染,而是靠 Express + EJS 组合实现闭环。
为什么 Live Server 打开 .ejs 文件只会显示源码或下载?
Live Server 是为纯静态文件(.html、.css、.js)设计的 HTTP 服务器,它不识别 .ejs 后缀,也不会调用 EJS 解析引擎。浏览器收到未渲染的 .ejs 内容时,要么当成文本显示(含 标签),要么因 MIME 类型不匹配触发下载。
- 错误现象:
http://127.0.0.1:5500/index.ejs→ 浏览器地址栏正常,但页面显示原始 EJS 源码 - 根本原因:没有 Node.js 进程执行
ejs.renderFile('./index.ejs', data) - 误区纠正:任何 VSCode 插件(包括 EJS language support)都**不能替代运行时渲染**,它们只负责语法高亮和跳转
用 Express + EJS 搭建最小可用预览服务
这不是“配置”,而是写一个真实可运行的脚本。Express 原生支持 EJS,且默认约定清晰,比手动用 http 模块更可靠、更易扩展。
- 初始化项目:
npm init -y && npm install express ejs - 目录结构必须包含:
views/(放index.ejs)、public/(放 CSS/JS/图片) -
app.js关键配置三行:
app.set('views', './views');
app.set('view engine', 'ejs');
app.use(express.static('public'));注意:res.render('index') 会自动查找 ./views/index.ejs,不是 index.html.ejs,文件名必须严格匹配,后缀不可省略。
详细的 Three.js 3D 图形参考,涵盖场景设置、相机、几何体、材质、光照、动画、控制器、加载器、数学工具和调试。
如何让修改 EJS 后自动刷新浏览器?
Express 本身不带热重载,但加一个轻量工具就能解决。推荐 nodemon,它监听文件变化并重启服务,配合 Live Server 托管 public/ 下资源,体验接近前端开发流。
- 安装:
npm install --save-dev nodemon - 改
package.json中的"scripts":
"dev": "nodemon app.js"
启动后访问 http://localhost:3000/,每次保存 views/index.ejs,nodemon 会重启服务,浏览器刷新即可看到新结果。
- 别把 Live Server 用在
.ejs上——它只该用于public/下的静态资源调试(比如单独打开public/style.css) - 如果用了
res.sendFile()直接返回.ejs文件,那还是原始内容——必须走res.render()
EJS 文件命名与路径容易踩的坑
EJS 渲染对路径和命名极其敏感,错一个字符就 404 或报 Error: Failed to lookup view。
-
app.set('views', './templates')→ 那么所有res.render('home')就必须对应./templates/home.ejs,不是./views/home.ejs - 子目录需显式写出:
res.render('admin/dashboard')查找的是./views/admin/dashboard.ejs - 不支持自动补
.ejs后缀:写res.render('index.html')就真去找index.html,不会 fallback 到index.html.ejs - 变量传入必须是对象:
res.render('index', { title: 'My Site' }),不能传数组或原始值
最常被忽略的是:EJS 模板里写的 include 路径,是相对于 views 目录的,不是相对于当前文件——比如 总是去 ./views/partials/header.ejs,哪怕当前模板在 ./views/user/profile.ejs。

















