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

Why res.render() doesn't send local variables to the client without template engine?

我需要在我的客户端访问由

发送的变量user
res.render('home.html', { user: req.user });

不使用 pugejs

等模板引擎

这可能吗?

HTML 不是模板语言,因此不能用于发送变量。

res.render() 函数编译您的模板,在那里插入局部变量,并从这两件事中创建 html 输出。语法如下-

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

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

在 html 中,您不能动态 pass/insert 数据变量。这是模板引擎的主要用例。他们将 runtime/dynamic 值放入 html 中,这可能是您正在寻找的。

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

例如。您正在从服务器端传递用户,并且很可能希望传递的变量在客户端呈现。您可以只安装像 ejs - npm install ejs 这样的视图引擎,在 app.js - app.use('view engine','ejs'); 中设置您的视图引擎,然后将这一行添加到html 您要将变量发送到客户端的页面,例如 - <p> <%= user %> </p> 就是这样。将您的 html 文件保存在视图文件夹中,这样就可以了。