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

时间:2019-03-03 05:50:42

标签: javascript html node.js express ejs

这是我的服务器端代码:

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});
})

这是我的客户端代码(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>

我在Main.html页面上获得的输出是“ <%-name%>”。而是应打印“性能概述”。这段代码到底有什么问题?

  

编辑:

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

4 个答案:

答案 0 :(得分:3)

将其更改为<%= name %>应该可以解决。

如果不是这样,您可以尝试将app.set('view engine', 'html')更改为app.set('view engine', 'ejs');,然后删除以下两行。

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}) ;
});

我一直都是这样写的,所以我不能肯定地说语法是否正确,或者即使不这样设置ejs也能正常工作。

更新

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

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

答案 1 :(得分:1)

<%- Outputs the unescaped value into the template
<%= Outputs the value into the template (HTML escaped)

当您要打印值时,请改用<%=标签,因此将<%- name%>更改为<%= name%>

可在此处找到信息-https://ejs.co/#docs

答案 2 :(得分:0)

在Main.html中将<%-name%>更改为<%= name%>

答案 3 :(得分:0)

const express = require('express');
const bodyParser = require('body-parser');

const port = 5000;

const app = 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 });
});

app.listen(port, console.log(`Server is running on port ${port}`))

尝试此操作,它将呈现HTML页面,并访问您在其中传递的变量。