Egg.js 中如何正确渲染带变量的 HTML 模板?
我在 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>
ctx.render方法时,正确传递了模板所需的变量。在你的例子中,看起来你已经尝试通过ctx.locals来传递变量,但是可以直接在render方法中传递一个对象来避免潜在的问题。你可以尝试这样修改你的 controller 代码:
这样,你就可以在模板中直接使用
<%= name %>来渲染变量的值了。注意,ctx.render的第二个参数应该是一个包含所有模板变量的对象。如果这样改了还是有问题,检查一下你的模板文件路径是否正确,以及确保 EJS 模板引擎已经在你的项目中正确配置了。大多数情况下,Egg.js 默认已经配置好了 EJS,所以应该是没问题的。不过多检查一下配置文件总没错。
希望这能解决你的问题,有时候这些小细节真是让人抓狂。