Javascript 如何将数据数组从express.js传递到ejs模板并呈现它们

Javascript 如何将数据数组从express.js传递到ejs模板并呈现它们,javascript,node.js,express,ejs,Javascript,Node.js,Express,Ejs,我在我的nodejs web应用程序中使用express.js,用户输入一些条件,程序得到如下数据数组: var data = [ { name: 'Salmons Creek', image: 'https://farm6.staticflickr.com/5479/11694969344_42dff96680.jpg', description: "Great place to go fishin' Bacon ipsum dolor amet kielbasa

我在我的nodejs web应用程序中使用
express.js
,用户输入一些条件,程序得到如下数据数组:

var data = [
  {
    name: 'Salmons Creek',
    image: 'https://farm6.staticflickr.com/5479/11694969344_42dff96680.jpg',
    description: "Great place to go fishin' Bacon ipsum dolor amet kielbasa cow"
    },
  {
    name: 'Granite Hills',
    image: 'https://farm5.staticflickr.com/4103/5088123249_5f24c3202c.jpg',
    description: "It's just a hill.  Made of granite.  Nothing more! Cow doner."
    },
  {
    name: 'Wildwood Miew',
    image: 'https://farm5.staticflickr.com/4016/4369518024_0f64300987.jpg',
    description: 'All campsites.  All the time.Short ribs pastrami drumstick.'
    },
  {
    name: 'Lake Fooey',
    image: 'https://farm7.staticflickr.com/6138/6042439726_9efecf8348.jpg',
    description: 'Hills and lakes and lakes and hills.  Pork ribeye pork chop.'
    }
];

我想使用EJS模板语言来渲染数组中的所有对象。如何将数据传递到模板并呈现它们?

在js文件中,您应该像这样呈现EJB:

var express = require('express');
var app = express();
var path = require('path');

// viewed at http://localhost:8080
app.use("/", express.static(__dirname + '/'));
app.set('view engine', 'ejs');
app.get('/', function(req, res) {
var data = [
{
  name: 'Salmons Creek',
  image: 'https://farm6.staticflickr.com/5479/11694969344_42dff96680.jpg',
  description: "Great place to go fishin' Bacon ipsum dolor amet kielbasa cow"
  },
{
  name: 'Granite Hills',
  image: 'https://farm5.staticflickr.com/4103/5088123249_5f24c3202c.jpg',
  description: "It's just a hill.  Made of granite.  Nothing more! Cow doner."
  },
{
  name: 'Wildwood Miew',
  image: 'https://farm5.staticflickr.com/4016/4369518024_0f64300987.jpg',
  description: 'All campsites.  All the time.Short ribs pastrami drumstick.'
  },
{
  name: 'Lake Fooey',
  image: 'https://farm7.staticflickr.com/6138/6042439726_9efecf8348.jpg',
  description: 'Hills and lakes and lakes and hills.  Pork ribeye pork chop.'
  }
];
res.render('index.ejs', {data:data} );
});

app.listen(8080);
在ejs文件中,可以如下方式呈现数据变量:

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
</head>

<body>
  <ul>
    <% data.forEach(function(dat) { %>
        <li><%= dat.name %></li>
        <li><%= dat.image%></li>
        <li><%= dat.description%></li>
    <% }); %>
  </ul>
 </body>

</html>
.
+-- app.js
+-- views
|   +-- index.js

如何准确地渲染它们?就像字符串一样,在元素中?您必须给我们一个您想要的输出示例。大多数模板引擎的可能副本都有所谓的上下文。在ejs中,它是渲染方法的第二个参数。因此,您可以执行类似于
res.render('page1',{data:data})
的操作,然后数据应该可以用于您的EJS脚本。这实际上是可行的,但如果我刷新页面,将再次添加相同的数据,因此每次刷新数据时都会添加数据。有什么想法吗?也许用if支票?嗨,汤姆。“刷新”是什么意思?当我重新加载页面时,我总是看到相同的数据,而不是在页面中重复多次。