使用 EJS 将数据从 Node js 传递到 HTML

Har*_*mar 4 html javascript ejs node.js express

这是我的服务器端代码:

app.set('view engine', 'html');
app.engine('html', require('ejs').renderFile);
app.use(express.static('views'));
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());

app.get('/',function(req,res){
    var title = "PERFORMANCE OVERVIEW";
    res.render('Main.html',{name:title});
})
Run Code Online (Sandbox Code Playgroud)

这是我的客户端代码(Main.html):

<div class="row">
    <div class="sm-col-12">
    <h3 contenteditable="true" style="font-family:BentonSans Medium; text-align:center; color:rgb(0,38,99);"><%= name %></h3>                    
    <hr style="border-top: dotted 2px;color:grey" />
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我在 Main.html 页面上得到的输出是“<%-name%>”。相反,它应该打印“性能概述”。这段代码究竟有什么问题?

编辑:

我忘了提到我还尝试了其他变体,例如<%= name%> and {{ name }}. 但我"<%= name%>" and "{{ name }}"分别得到了输出。

Rei*_*ica 6

将其更改为<%= name %>应该可以修复它。

如果没有,您可以尝试更改app.set('view engine', 'html')app.set('view engine', 'ejs');,然后删除以下 2 行。

app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());

app.get('/',function(req,res){
    var title = "PERFORMANCE OVERVIEW" ;
    res.render('Main',{name:title}) ;
});
Run Code Online (Sandbox Code Playgroud)

我一直是这样写的,所以我不能确定你的语法是否正确,或者 ejs 是否可以在不这样设置的情况下工作。

更新

确保该Main.html文件位于名为 的文件夹中views,并将此文件重命名为Main.ejs.

下一个更改res.render('Main.html',{name:title});res.render('main',{name:title});