Egg.js 中如何正确渲染带变量的 HTML 模板?

夏侯若彤 阅读 5

我在 Egg.js 里用 view 渲染 HTML,想把 ctx.locals 的变量传到页面里,但页面上直接显示了 这段代码,根本没解析成实际值。是不是模板引擎没配对?

我用的是默认的 ejs,controller 里写了 ctx.locals.name = ‘小明’,然后 render(‘index.html’)。页面代码如下:

<!DOCTYPE html>
<html>
<head><title>测试</title></head>
<body>
  <h1>你好,<%= name %></h1>
</body>
</html>
我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
司空江梅
常见的解决方案是确保你在使用 ctx.render 方法时,正确传递了模板所需的变量。在你的例子中,看起来你已经尝试通过 ctx.locals 来传递变量,但是可以直接在 render 方法中传递一个对象来避免潜在的问题。

你可以尝试这样修改你的 controller 代码:

await ctx.render('index.html', { name: '小明' });


这样,你就可以在模板中直接使用 <%= name %> 来渲染变量的值了。注意,ctx.render 的第二个参数应该是一个包含所有模板变量的对象。

如果这样改了还是有问题,检查一下你的模板文件路径是否正确,以及确保 EJS 模板引擎已经在你的项目中正确配置了。大多数情况下,Egg.js 默认已经配置好了 EJS,所以应该是没问题的。不过多检查一下配置文件总没错。

希望这能解决你的问题,有时候这些小细节真是让人抓狂。
点赞
2026-03-21 14:00