提问者:小点点

为什么res.render()不向没有模板引擎的客户机发送局部变量?


我需要访问客户端中的变量user,该变量由

res.render('home.html', { user: req.user });

不使用模板引擎,如pugejs

这可能吗?


共1个答案

匿名用户

HTML不是模板语言,所以不能用来发送变量。

res.render()函数编译模板,在那里插入局部变量,并用这两个东西创建html输出。 语法如下-

res.render(view [, locals] [, callback])

视图参数是一个字符串,它是要呈现的视图文件的文件路径。 为此,您需要一个模板或视图引擎。

在html中,您不能动态地传递/插入数据变量。 这是模板引擎的主要用例。 它们将运行时/动态值放在html中,这正是您可能正在寻找的。

简而言之,最好使用任何模板引擎,如pug,jade,ejs等,其中大多数都具有与html几乎相似的语法来呈现动态html页面。 我认为没有任何方法(至少足够简单)在html页面中动态地将变量从服务器发送到客户机。 在您的用例中,使用模板引擎将是最好的选择。

对于。 您正在从服务器端传递用户,并且很可能希望传递的变量在客户端呈现。 您只需安装一个视图引擎,例如ejs-npm install ejs,在app.js-app.use('view engine','ejs');中设置您的视图引擎,并且只需在您想要将变量发送到客户端的html页面中添加这一行,例如-

; <%=用户%>;

就这样了。 把你的html文件保存在视图文件夹中,这样就可以了。

相关问题